Hibernate的高级特性

Hibernate的高级特性

ID:38835978

大小:774.00 KB

页数:19页

时间:2019-06-20

Hibernate的高级特性_第1页
Hibernate的高级特性_第2页
Hibernate的高级特性_第3页
Hibernate的高级特性_第4页
Hibernate的高级特性_第5页
资源描述:

《Hibernate的高级特性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章Hibernate的高级特性11.1Hibernate的事务管理11.2Hibernate的并发11.3Hibernate的拦截器11.1Hibernate的事务管理11.1.1事务的概念事务有4个重要特性:原子性:即作为一个事务,它是一个不可分割的整体,只有全部操作都完成了,才算结束;其中任何一个操作执行失败,整个事务都要撤销。一致性:即事务不能破坏数据库的完整性和业务逻辑的一致性。事务不管成功还是失败,事务结束时,整个数据库内部数据都是正确的。隔离性:即在并发的数据库操作时,不同的事务操作相同的数据时,每个事务都有自己的完整的数据空间。一个事务不会看到或拿到另一个事务

2、正修改到一半的数据,这些数据要么是另一个事务修改前的,要么是另一个事务修改后提交的。拥有这个特性,是为了在数据库并发操作过程中,保证所有并发操作的正确性。持久性:即事务成功提交后,数据就被永久地保存到数据库,重新启动数据库系统后,数据仍然保存在数据库系统中。11.1.2Hibernate的事务将事务管理委托给JDBC进行处理是最简单的实现方式,Hibernate对于JDBC事务的封装也比较简单。例如下面的代码:Sessionsession=sessionFactory.openSession();Transactiontx=session.beginTransaction();...

3、tx.commit();从JDBC层面而言,上面的代码实际上对应着:Connectioncn=getConnection;cn.setAutoCommit(false);//JDBC调用相关的SQL语句cn.commit();11.1.2Hibernate的事务在sessionFactory.openSession()语句中,Hibernate会初始化数据库连接。与此同时,将其AutoCommit设为关闭状态(false),即一开始从SessionFactory获得的session,其自动提交属性已经被关闭。下面的代码不会对数据库产生任何效果:sessionsession=sessio

4、n.Factory.openSession();session.save(user);session.close();这实际上相当于JDBCConnection的AutoCommit属性被设为false,执行了若干JDBC操作之后,没有调用commit操作。如果要使代码真正作用到数据库,必须显示地调用Transaction指令,例如下面的代码:Sessionsession=sessionFactory.openSession();Transactiontx=sessio.beginTransaction();session.save(user);tx.commit();session.

5、close();11.1.2Hibernate的事务Hibernate的事务应用一般分为下面几个步骤:(1)通过SessionFactoy获得Session对象,例如下面的代码:Sessionsession = sessionFactory.openSession();(2)通过Session对象开始一个事务,例如下面的代码:Transactiont=session.beginTransaction();(3)进行相关的数据操作。(4)事务提交,例如下面的代码:t.commit();(5)如果事务处理出现异常,则撤销事务(通常叫做事务回滚),例如下面的代码:t.rollback();(

6、6)关闭Session,结束操作,例如下面的代码:session.close();一个完整的应用Hibernate事务的实例。11.1.2Hibernate的事务2.基于JTA的事务管理概念JTA(JavaTransactionAPI)是由JavaEETransactionManager管理的事务,其最大的特点是调用UserTransaction接口的begin()、commit()和rollback()方法来完成事务范围的界定、事务的提交和回滚。JTA可以实现同一事务对应不同的数据库。JTA主要用于分布式的多个数据源的两阶段提交的事务,而JDBC的Connection提供单个数据源的

7、事务,后者因为只涉及一个数据源,所以其事务可以由数据库自己单独实现,而JTA事务因为其分布式和多数据源的特性,不可能由任何一个数据源实现事务。因此,JTA中的事务是由“事务管理器”来实现的,它会在多个数据源之间统筹事务,具体使用的技术就是所谓的“两阶段提交”。JTA事务管理由JTA容器实现,JTA容器对当前加入事务的众多Connection进行调度,实现事务性要求。JTA的事务周期可横跨多个JDBCConnection生命周期。同样,对于基于J

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。