请看下如下的操作:
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();//(2)
session.save(someObj);//将someObj插入到DB中
tx.commit();//(4)
你认为对象someObj会插入到DB中吗?
答案是对象并没有被保存到数据库中。
这是怎么回事,事务不是提交了吗,为什么数据没有被插入到DB中呢?相信对于惯于通过jdbc操作数据库,而且不太熟悉hibernate的开发人员而言,有可能会有这样的疑问。
简单解释一下:
(2)中的Transaction不是jdbc中常用的javax.transction.Transaction,所以(4)这一句并不代表完成了对数据库的操作。另外,需要了解下hibernate的session的缓存机制。
session对象中维护着一个持久化对象的map列表,someObj就保存在此列表中。对于hibernate的api来说,只有调用了session.close(),hibernate才会将当前session缓存中的持久化对象和数据库中的数据进行同步,该插入的插入,该更新的更新,等等。
结论:
使用hibernate时,千万别忘了关闭session。
分享到:
相关推荐
Hibernate-nosession浅谈代码案例。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
hibernate中session的管理描述。 hibernate中session的管理描述。
hibernate中session对象的状态详解
Hibernate 中对session的管理!
Hibernate Session释放模式
JAVA的hibernate手动获取session的方法
No Hibernate Session bound to thread,没有绑定线程解决办法,找了好久才找到的
hibernate配置文件,session工厂学习,session链接数据库
可以对hibernate的 Session 和 Transaction 有更深入的认识 希望对一些概念比较模糊的人 有帮助
手写hibernate的session实现简单增删改查,适合新手学习hibernate
* 注意:HQL中使用参数的方法: * 1.根据参数名称来设置参数:匹配名称; * 2.根据参数位置来设置参数:匹配位置; */ //根据参数名称来设置参数 Query query = session.createQuery("from UserManager u where u....
hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)
Hibernate的透明持久化用起来非常舒服,有时甚至忘记了数据库的存在。我身边的朋友经常会分不清save、saveOrUpdate、update的区别,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且关于实体...
Hibernate_session_factory_配置
Hibernate配置资源包的session的实现。运用session来实现表的创建
NULL 博文链接:https://1601844782.iteye.com/blog/2275923
Spring与Hibernate集成中的session.doc
NULL 博文链接:https://1035054540-qq-com.iteye.com/blog/1535689
Session是Hibernate中应用最频繁的接口,Session也被称为持久化管理器,它负责所有的持久化工作,负责管理持久化对象的生命周期,提供第一级别的高级缓存来保证持久化对象的数据与数据库同步
官网hibernate:问题说明: 1、安装整合通过; 2、整合时注意javassist-3.22.0-GA.jar与struts2.4的 javassist-3.20.0-GA.jar重复...3、整合所需基础包以及整合需要的外部包,自己放到一个新建文件夹中,方便大家查找!