Hibernate4 中getHibernateTemplate() 使用原生sql语句查询并返回非托管实体对象

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
@Repository
public class ABCDaoImpl extends HibernateDaoSupport implements IABCDao {

    @Inject
    public void setSuperSessionFactory(SessionFactory sessionFactory) {
        super.setSessionFactory(sessionFactory);
    }

    
    @SuppressWarnings("unchecked")
    @Override
    public List<StudentExcelDto> getReport() {
        String sql = "select name, age,  sex, (CASE status WHEN 0 THEN '在校' ELSE '离校' END) status from t_student";
       
        return getHibernateTemplate().getSessionFactory().openSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(StudentExcelDto.class)).list();
    }

}

红色字返回非托管实体对象

自动生成hibernate配置文件的时候,会在dao层用到getSession()方法来操作数据库记录,但是他还有个方法getHibernateTemplate(),这两个方法究竟有什么区别呢?
1.使用getSession()方法你只要继承sessionFactory,而使用getHibernateTemplate()方法必须继承 HibernateDaoSupport当然包括sessionFactory,这点区别都不是特别重要的,下面这些区别就很重要了
2.getSession()方法是没有经过spring包装的,spring会把最原始的session给你,在使用完之后必须自己调用相应的 close方法,而且也不会对声明式事务进行相应的管理,一旦没有及时关闭连接,就会导致数据库连接池的连接数溢出,getHibernateTemplate()方法是经过spring封装的,例如添加相应的声明式事务管理,由spring管理相应的连接。
在实际的使用过程中发现的确getHibernateTemplate()比getSession()方法要好很多,但是有些方法在getHibernateTemplate()并没有提供,这时我们用HibernateCallback 回调的方法管理数据库.

SSH (三) Hibernate hql getHibernateTemplate()常用方法 前提条件:你的类必须继承HibernateDaoSupport HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。 常用方法举例: 增: save(Object entity):保存新的实例 saveOrUpdate(Object entity):根据实例... 阅读详情

相关推荐

单细胞空间转录组分析流程学习python版(三)

空转python版学习

zfyyzhys的博客 2058

getHibernateTemplate()与getSession()方法的区别

自动生成hibernate配置文件的时候,会在dao层用到getSession()方法来操作数据库记录,但是他还有个方法getHibernateTemplate(),这两个方法究竟有什么区别呢? 1.使用getSession()方法你只要继承sessionFactory,而使用getHibernateTemplate()方法必须继承 HibernateDaoSupport当然包括sessionF

Dai丶Yu 633

Oracle EBS FA 创建成批增加执行时间长且报错

摘要 Oracle EBS系统在执行"创建成批增"请求时出现长时间运行报错(ORA-00603和ORA-03114)。

陈显平的专栏-Oracle EBS 154

Hibernate(4)——三种查询方式

文章目录1 Hibernate悲观锁和乐观锁2 Hibernate 批处理–吞吐量 1 Hibernate悲观锁和乐观锁 悲观锁( Pessimistic Locking ),对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,大部分时候都是依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数...

weixin_45044097的博客 426

Hibernate执行原生SQL查询

通过HibernateTemplate可以实现原生SQL查询,session销毁不必手动关闭/* * 执行SQL查询 */ private List queryChatOnlineUser(final String sql) { return (List)getHi

点滴记录 507

Hinernate--原生sql查询结果集映射为非Entity对象

我们都知道,在Hibernate原生sql查询时,可以使用 SQLQuery query = session.createSQLQuery(queryString); query.addEntity(MaterialPo.class); List&lt;MaterialPo&gt; materialList = query.list(); 将结果集映射为一个Hibernate管理的实体Be...

yzy199391的博客 1317

HibernateSQLQuery实体查询(持久类PO或非持久类JavaBean)

用触发模式安全调用HibernateTemplate对数据库的访问 Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供如下两个方法,方便DAO的实现: public final HibernateTemplate getHibernateTemplate() public final void setSessionFactory(Sessio...

weixin_30713953的博客 260

HibernategetHibernateTemplate.find()和session.createQuery()方法总结

Spring中常用的hql查询方法(getHibernateTemplate().find()) 一、find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有User对象 二、find(String queryString , Object value); 示...

lmb55的专栏 1万+

使用hibernategetHibernateTemplate查询部分字段

废话不多说,直接贴上代码: package tdh.court09.dao;      import java.sql.SQLException;   import java.util.List;   import java.util.Map;      import org.apache.commons.logging.Log;   import org.apache

LiMing_0820的博客 2702

getHibernateTemplate()实例中,命名查询SQL语句的方法

在SSH框架的实际开发中,我们无法利用Query query=session.createSQLQuery("sql")这种方法来执行SQL语句。 不过好在Hibernate框架预留好了方法,我们可以使用getHibernateTemplate()实例的.findByNamedQuery()方法来执行SQL命令; 这种方法叫做命名查询; 首先,要在配置文件中: 找到hbm.xml,例如,

kidass_x的专栏 1775

hibernate 执行原生sql,select返回string,long

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

A1867350的博客 762

Hibernate4 执行SQL语句

官方文档位置:http://docs.jboss.org/hibernate/orm/4.2/manual/en-US/html/ 以下为转载内容:http://www.blogjava.net/ccbobocat/archive/2009/04/15/309510.html (一) 开门见山.今天我要说的是不用HQL执行SAVE和DELETE方法,用hibernate的exec

jokes000的专栏 5977

getHibernateTemplate().find(sql)的局限性

hibernate

zhanganbo的博客 1490

HibernategetHibernateTemplate()方法使用

<br />getHibernateTemplate()spring 中获得由spring所配置的hibernate的操作对象,然后利用此对象进行,保存,修改和删除等操作,此方法是在配置了spring以后,hibernate由spring接管,不直接使用hibernate的session了 HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate

wintree的专栏 2万+

转:getHibernateTemplate()更换getSession() hibernate3 默认支持延迟加载lazy SQL语句

转至:http://quyulu.blog.163.com/blog/static/3191360520101114115837861/   在项目中遇到数据库连接开了没有关闭导致在客户那边部署后网站运行了没多久就死了。连接不上数据库了。。 这是一篇搜索到的文章。。手动关闭session、仅供参考   一.getHibernateTemplate()更换getSession(),手动关闭...

·廢墟· 243

HibernateHibernateTemplate对象如何执行普通SQL语句

/**   * HibernateTemplate执行普通sql语句;方法1   */  public List getViewRecordByUserAndRandom6(int userId) {   final int userIdf = userId;   List viewRecordList = this.getHibernateTemplate().executeFind(

x1n1010的专栏 8823

getHibernateTemplate().findByCriteria()使用

getHibernateTemplate().findByCriteria()使用 用了这么多次getHibernateTemplate().findByCriteria(),现在才发现它很好用,可以解决很多查询问题。 getHibernateTemplate().findByCriteria(criteria)可以查询不需要分页的数据, getHibernateTemplate()...

u013277849的博客 1113

J2EE进阶(十六)HibernategetHibernateTemplate()方法使用

Hibernate封装了对数据库的例行操作,比单纯的jdbc的DAO,开发效率要高很多了。提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。结合struts2的事件过滤规则,需要添加额外的参数,但是这又与POST的提交方式相违背(POST与GET提交方式的区别,详见博文《的操作对象,然后利用此对象进行,保存,修改和删除等操作,此方法是在配置了。经查看代码,发现果然是数据库中userId为空导致问题的出现。...

IT全栈 华强工作室 4万+

getHibernateTemplate().find()方法

find(String queryString, Object[] values);  这个方法后者的参数必须是一个数组,而不能是一个List。 List ul=getHibernateTemplate().find("from User u where u.user

方逸涛的专栏 3万+

Hibernate SQLQuery 返回List<Bean>结果集

Hibernate hql查询语句: list=getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql).list(); Hibernate sql查询语句getHibernateTemplate().getSessionFactory().getCurrentSession().cre

hly_rain的专栏 4588

HibernategetHibernateTemplate()使用

getHibernateTemplate().load(Orgnization.class,parentId)第一个参数是要查询的数据,第二个查询的条件,就是根据这个id,拿出orgnization 说白了,它是spring结合hibernate一起时出现的,它相当于hibernate中的session spring 中获得由spring所配置的hibernate的操作对象,然后利

zhang434的专栏 881
上一篇: 几个jquery插件的例子
下一篇: schema_reference: 由于 accessExternalSchema 属性设置的限制而不允许 'file' 访问, 因此无法读取方案文档 '***.xsd'。
vevoly
博客等级 码龄10年 21粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值