重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
十余年专注成都网站制作,企业网站建设,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于企业网站建设,高端网页制作,对成都石雕等多个领域,拥有丰富的营销推广经验。深入浅析Java中的Hibernate事务管理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
环境与版本
hibernate 版本:Hibernate 4.2.2 (下载后的文件名为hibernate-release-4.2.2.Final.zip,解压目录hibernate-release-4.2.2.Final)
数据库: Oracle 10g
导入lib\required 中的所有jar 包
理论说明
1、SessionFactory负责创建Session,SessionFactory是线程安全的,多个并发线程可以同时访问一个SessionFactory 并从中获取Session实例
2、Session作为贯穿Hibernate的持久化管理器核心,提供了众多的持久化的方法,如save(), update ,delete ,find(Hibernate 3中已经取消了此方法)等,通过这些方法我们可以透明的完成对象的增删改查(CRUD-- create read update delete),这里所谓的透明是指,Session在读取,创建和删除影射的实体对象的实例时,这一系列的操作将被转换为对数据库表中数据的增加,修改,查询和删除操作。
Session有以下的特点
1)不是线程安全的,应该避免多个线程共享同一个Session实例
2)Session实例是轻量级的,所谓轻量级:是指他的创建和删除不需要消耗太多资源
3)Session对象内部有一个缓存,被称为Hibernate第一缓存,他存放被当前工作单元中加载的对象,每个Session实例都有自己的缓存。
3、Hibernate Session缓存被称为Hibernate的第一级缓存。SessionFactory的外置缓存称为Hibernate的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存 存放元数据和预定义SQL, SessionFactory的内置缓存是只读缓存。
4、Hibernate Session缓存的三大作用:
1)减少数据库的访问频率,提高访问性能。
2)保证缓存中的对象与数据库同步,位于缓存中的对象称为持久化对象。
3)当持久化对象之间存在关联时,Session 保证不出现对象图的死锁。
Session 如何判断持久化对象的状态的改变呢?
Session 加载对象后会为对象值类型的属性复制一份快照。当Session 清理缓存时,比较当前对象和它的快照就可以知道那些属性发生了变化。
5、Session 什么时候清理缓存?
1)commit()
方法被调用时
2)查询时会清理缓存,保证查询结果能反映对象的最新状态。
3)显示的调用session 的 flush方法。
session 清理缓存的特例:
当对象使用 native 生成器 时 会立刻清理缓存向数据库中插入记录。
实例代码
测试的代码目录如下:
hibernate.cfg.xml
<?xml version="1.0"?>true oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@XX.26.158.43:1521:orcl org.hibernate.dialect.OracleDialect