网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

getCurrentSession与openSession的区别-创新互联

Hibernate框架中利用Configuration对象的buildSessionFactory()可以得到一个SessionFactory的对象,顾名思义SessionFactory就是产生Session对象的工厂,而它产生Session的方法有两种:

成都网站设计、网站建设服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!

1.openSession();

2.getCurrentSesion()

由于在很多面试题中有考察到这个知识点,所以我总结了一下这两种产生Session方法的区别。

区别1.openSession()方法无论在上下文中有没有Session存在都会建一个新的Session,而getCurrentSession()方法会检测在上下文环境中是否有Session存在,如果有,则拿到这个Session;如果没有则创建一个新的Session。

区别2.openSession()方法创建的Session在最后必须调用close()方法,而getCurrentSession()方法创建的Session在调用commit()方法后无需再调用close()方法(最好不要调用,会产生不必要的错误)。

区别3.getCurrentSession()方法的用途是界定事物边界。

Ps:在一次测试中发现当先调用openSession()方法产生Session后,再调用getCurrentSession()方法得到的并不是之前产生的那个Session,而是一个新的Session。

解释一下上面所提到的上下文,这里所说的上下文是在hibernate.cfg.xml中指定的,其中有两个常用的取值,分别是thread和jta。这两者的区别在于thread适用于单Connection,他的事物由数据库连接Connection管理;而jta适用于多Connection(跨数据库)的分布式程序(当然单Connection也可以),他的事物由application server提供的专门的事物管理器来管理。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


文章名称:getCurrentSession与openSession的区别-创新互联
网址分享:http://bjjierui.cn/article/iciji.html

其他资讯