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的自动提交和关闭. 个人愚见,还望多多交流.
方式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的自动提交和关闭. 个人愚见,还望多多交流.
相关文章推荐
- 操作数据库(getHibernateTemplate()的使用)
- spring整合hibernate使用getHibernateTemplate().save()方法不能输入数据库
- getHibernateTemplate()方法的使用
- Hibernate 的getHibernateTemplate()方法使用
- 关于使用super.getHibernateTemplate()中的方法报java.lang.NullPointerException的解决办法
- 使用getHibernateTemplate()的方法时出现空指针异常的解决办法
- ssh中的dao层this.getHibernateTemplate().find()方法
- getHibernateTemplate()使用方法
- Hibernate 的getHibernateTemplate()方法使用
- gethibernatetemplate的find方法使用说明
- getHibernateTemplate().find()及带参使用方法
- 【问题记录】使用getHibernateTemplate().find()方法的get(index)方法
- Hibernate的getHibernateTemplate()对数据库进行增删改的方法使用
- Hibernate 中一些方法的使用___getHibernateTemplate()的用法
- linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)
- 关于HibernateDaoSupport中的getHibernateTemplate().execute及executeFind方法
- SSH2 -- getHibernateTemplate()常用方法
- 在JavaScript中操作时间之getUTCDate()方法的使用
- jumliang Spring中常用的hql查询方法(getHibernateTemplate())
- Hibernate hql getHibernateTemplate()常用方法汇总