Hibernate的高级功能.docx

上传人:牧羊曲112 文档编号:3157972 上传时间:2023-03-11 格式:DOCX 页数:6 大小:38.90KB
返回 下载 相关 举报
Hibernate的高级功能.docx_第1页
第1页 / 共6页
Hibernate的高级功能.docx_第2页
第2页 / 共6页
Hibernate的高级功能.docx_第3页
第3页 / 共6页
Hibernate的高级功能.docx_第4页
第4页 / 共6页
Hibernate的高级功能.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Hibernate的高级功能.docx》由会员分享,可在线阅读,更多相关《Hibernate的高级功能.docx(6页珍藏版)》请在三一办公上搜索。

1、Hibernate的高级功能Hibernate的高级功能 一:Hibernate 的批量处理: 在Hibernate应用过程中,难免会遇到批量处理的情况,本节通过批量插入、批量更新与批量删除来讲解Hibernate的批量处理操作。 1、 批量插入 在Hibernate应用中,批量处理有两种方法。一种是通过Hibernate的缓存,另一种是绕过Hibernate的缓存进行批量插入。 、通过Hibernate的缓存进行批量插入 使用这种方法时,首先要在Hibernate的配置文件hibernate的配置文件hibernate.cfg.xml中设置批量尺寸属性hibernate.jdbc.batch

2、_size,且最好关闭Hibernate的二级缓存以提高效率。 例如: . 50 false 绕过Hibernate直接调用JDBC进行插入 由于Hibernate只是对JDBC进行了轻量级的封装,因此完全可以绕过Hibernate直接调用JDBC进行批量插入。 2、 批量更新 与批量插入类似,Hibernate的批量更新也有两种方式:一种是由Hibernate直接处理;另一种则是绕过Hibernate,直接调用JDBC API 来处理。 由Hibernate直接进行批量更新 为了使Hibernate的HQL直接支持update/delete的批量更新语法,首先要在Hibernate的配置文件

3、hibernate.cfg.xml中设置HQL/SQL查询翻译器属性hibernate.query.factory_class。 . Org.hibernate.hql.qst.ASTQueryTranslatorFactory 3、 批量删除 同样的,Hibernate也提供了两种批量删除的方法:一种由Hibernate直接处理;另一种则是绕过Hibernate,调用JDBC API来处理。 、由Hibernate直接进行批量删除 与批量更新一样,为了使Hibernate的HQL直接支持update/delete的批量删除语法,首先要在Hibernate的配置文件hibernate.cfg.

4、xml中设置HQL/SQL查询翻译器属性hibernate.query.factory_class。 . org.hibernate.hql.qst.ASTQueryTranslatorFactory 、绕过Hibernate调用JDBC进行批量删除 同样删除课程表中课程号大于200的课程。 Session session=HibernateSessionFactory.getSession; Transaction ts=session.beginTransaction; Connection conn=session.connection; Try Statement stmt=conn.

5、createStatement; Stmt.executeUpdate(“delete from KCB where KCH200”) catch (SQLException e) e.printStackTrace; Tmit; HibernateSessionFactory.closeSession; 二、实体对象生命周期 实体对象的生命周期,是Hibernate应用的一个关键概念。对生命周期的理解和把握,不仅对Hibernate的正确应用颇有裨益,而且对Hibernate实现原理的探索也很有意义。这里的实体对象,特指Hibernate O/R映射关系中的域对象 实体对象的生命周期有以下3

6、种状态。 1、 transient 瞬时态,即实体对象在内存中的存在,与数据库中的记录无关。 2、 persisent 持久态是指对象处于由Hibernate框架所管理的状态。在这种状态下,实体对象的引用被纳入Hibernate实体容器中加以管理。处于持久状态的对象,其变更将由Hibernate固化到数据库中。 3、 detached 处于持久态的对象,其对应的Session实例关闭之后,此对象就处于托管状态。 三、Hibernate事务管理 事务是数据库并发控制不可分割的基本工作单位,具有原子性、一致性、隔离性和持久性的特点。 1、 基于JDBC的事务管理 Hibernate是JDBC的轻量

7、级封装,本身并不具备事务管理能力。在事务管理层,Hibernate将其委托给底层的JDBC或JTA,以实现事务管理和调度功能。 在JDBC的数据库操作中,一项事务是由一条或多条表达式组成的不可分割的工作单元,通过提交commit或回滚rollback来结束事务的操作。 在JDBC中,事务默认是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作。操作成功后,系统将自动调用commit提交。否则,将调用rollback回滚。 在JDBC中,可以通过调用setAutoCommit禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit进行整体提交。 2、

8、基于JTA的事务管理概念 JTA是由Java EE Transaction Manager 去管理的事务。其最大的特点是调用UserTransaction接口的begin、commit和rollback方法来完成事务范围的界定、事务的提交和回滚。JTA可以实现统一事务对应不同的数据库。 JTA主要用于分布式的多个数据源的两阶段提交事务,而JDBC的Connection提供单个数据源的事务。后者因为只涉及一个数据源,所以其事务可以由是巨款自己单独实现。而JTA事务因为其分布式和多数据源的特性,不可能由任何一个数据源实现事务。因此,JTA中的事务是由“事务管理器”实现的。它会在多个数据源之间统筹事

9、务,具体使用的技术就是所谓的“两阶段提交”。 3、 锁 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日中结算处理中,希望对某个结算时间点的数据进行处理,而不希望在结算过程中,数据再发生变化。此时,需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制就是所谓的“锁”。 Hibernate支持两种锁机制,悲观锁 和乐观锁 悲观锁是指对数据被外界修改持保守态。假定任何时刻存取数据时,都可能有一个客户也正在存取同一数据。为了保持数据被操作的移植性,于是对数据采取了数据库层次的锁定状态,依靠数据库提供的锁机制来实现。 乐观锁则是乐观的认为数据很少发生同时存取的问题,因而不做数据库层次上的锁定。为了维护正确的数据,乐观锁采用应用程序上的逻辑实现版本控制的方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号