this.getsession和this.getHibernateTemplate().getSessionFactory().getCurrentSession()/OpenSession区别 .
2016-07-07 13:48
281 查看
这个是hibernate与spring整合开发,让DAO继承了spring的HibernateDaoSupport,这样的确能够提高开发效率 ,但是不够灵活,而且使DAO层依赖于spring的api,增加了耦合。但是不考虑复用的话还可以。
下面一个一个的分析: this.getsession实际上是调用了父类中的方法获得session。使用spring管理hibernate的SessionFactory的时候,这个方法会从session池中拿出一session.这样做有可能有问题,就是超session池连接数的时候,spring无法自动的关闭session。 不推荐使用
this.getHibernateTemplate().getSessionFactory().getCurrentSession()从spring管理的sessionFactory中创建一个绑定线程的session.spring会根据该线程的执行情况来自动判断是关闭session还是延迟关闭。这样做可以避免手动的管理实务,同时一个线程最多开启和关闭一次session又可以提高程序的性能。 极力推荐使用这种方法
this.getHibernateTemplate().getSessionFactory().OpenSession。这种方法从spring管理的sessionFactory中创建一个session,此session不是线程绑定的。当执行完一个实务的时候自动关闭session.这种方法不用手动管理实务,但是同一个线程多次的开启和关闭session,浪费系统资源和影响执行效率,正常情况下还是不要用了。
下面一个一个的分析: this.getsession实际上是调用了父类中的方法获得session。使用spring管理hibernate的SessionFactory的时候,这个方法会从session池中拿出一session.这样做有可能有问题,就是超session池连接数的时候,spring无法自动的关闭session。 不推荐使用
this.getHibernateTemplate().getSessionFactory().getCurrentSession()从spring管理的sessionFactory中创建一个绑定线程的session.spring会根据该线程的执行情况来自动判断是关闭session还是延迟关闭。这样做可以避免手动的管理实务,同时一个线程最多开启和关闭一次session又可以提高程序的性能。 极力推荐使用这种方法
this.getHibernateTemplate().getSessionFactory().OpenSession。这种方法从spring管理的sessionFactory中创建一个session,此session不是线程绑定的。当执行完一个实务的时候自动关闭session.这种方法不用手动管理实务,但是同一个线程多次的开启和关闭session,浪费系统资源和影响执行效率,正常情况下还是不要用了。
相关文章推荐
- Linux下Kafka单机安装配置方法(图文)
- Linux 进程栈和线程栈的区别
- 在linux下如何判断是否已经安装某个软
- Archlinux下i3wm与urxvt的配置
- 设置ngnix下的文件在浏览器端直接下载而不是被浏览器默认打开
- shell直接退出后 后台进程关闭的原因和对处
- Linux下C语言使用popen获取一个文件的内容小实例
- apache开启页面压缩
- makefile自动生成依赖
- 关于makefile中自动产生依赖的理解
- Tomcat7.0源码分析——请求原理分析(中)
- LFCS 系列第十讲:学习简单的 Shell 脚本编程和文件系统故障排除
- linux后台开发需要的知识
- Retrieve file from Microsoft SharePoint
- CentOS影响java的线程数的因素
- linux下SSH攻击解决方法
- linux下的进程通信(IPC)的方式--信号量
- centos安装php扩展mcrypt
- myeclipse+tomcat 启动项目访问时怎样才能不加项目名直接访问
- Servlet的doGet与doPost方法的区别与使用