您的位置:首页 > 其它

DAO层的CRUD操作该使用getHibernateTemplate()下的方法

2013-10-25 16:46 357 查看
今天突然想总结下,DAO层继承了HibernateDaoSupport之后的查询是该使用哪个:

方式1:

Session session  = this.getSeesion();    在一个线程中可能get很多session 很可能导致数据库连接超过上限。所以推荐使用getHibernateTemplate

session.CreateQuery("hql"); 或者session.CreateSqlQuery("sql")  ;

方式2:

Session session  = this.getHibernateTemplate().getSessionFactory().openSession();

session.CreateQuery("hql"); 或者session.CreateSqlQuery("sql")  ;

方式3:

Session session  = this.getHibernateTemplate().getSessionFactory().getCurrentSession();

session.CreateQuery("hql"); 或者session.CreateSqlQuery("sql")  ;

方式4(以下都是Hql查询):

this.getHiernateTemplate().find(......);

this.getHiernateTemplate().save(......);

this.getHiernateTemplate().update(......);

this.getHiernateTemplate().merge(......);

this.getHiernateTemplate().saveOrUpdate(......);

this.getHiernateTemplate().executeFind(回调函数)  返回的是集合, 回调函数中可以使用sql或者hql查询关键点是回调函数内部的

session.CreateQuery("hql"); 或者session.CreateSqlQuery("sql")  ;来决定.  一般用来返回记录集合

this.getHiernateTemplate().execute(回调函数)  返回的是Object, 回调函数中可以使用sql或者hql查询关键点是回调函数内部的

session.CreateQuery("hql"); 或者session.CreateSqlQuery("sql")  ;来决定.  一般用来返回记录个数

=====================================

综合以上这么多的操作,分析后决定还是使用最后面的方式(方式4) 遇到带有多个查询条件的或者原生sql查询可以使用基于回调的操作实现.同样保证了session的自动提交和关闭.  个人愚见,还望多多交流.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: