Hibernate事务缓存

Hibernate事务缓存

ID:44908466

大小:369.48 KB

页数:24页

时间:2019-11-04

Hibernate事务缓存_第1页
Hibernate事务缓存_第2页
Hibernate事务缓存_第3页
Hibernate事务缓存_第4页
Hibernate事务缓存_第5页
资源描述:

《Hibernate事务缓存》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第十三章第十三章HibernateHibernate事务、并发及缓存管理事务、并发及缓存管理课程目标课程目标HibernateHibernate提交事务与撤消事务提交事务与撤消事务HibernateHibernate多事务引发的并发问题多事务引发的并发问题采用悲观锁与乐观锁解决并发问题采用悲观锁与乐观锁解决并发问题HibernateHibernate缓存的管理缓存的管理体验项目体验项目————<<模拟银行转账程序模拟银行转账程序>>程序实现的功能:该程序以银行转账流程作为参考,实现了模拟银行转账的功能。程序运行的过程如下所示:(1)创建

2、一个数据库表,用来存储账户余额。在图13-1所示的表中定义了两个字段,id表示账户ID,balance表示账户余额。(2)开始测试程序。在转账页面,将显示出用户1的账户余额,以及可选择转账金额与被转入的账户ID。我们在此选择转账金额为150元,转入的账户ID为2。如图13-2所示:图13-2转账页面(3)确认转账金额与被转入的账户ID后,即可点击“确定”按钮进行转账操作。此时程序将顺利地执行转账操作,并且将进入转账成功页面。在该页面将会显示所转账的各项数据以及转账后的账户余额。如图13-3所示:图13-3转账成功(4)转账成功后,还需要去数据库

3、中查看转账是否顺利完成。因为在现实的银行转账后,是不可能直接显示对方的账户余额的。(5)由于我们实现的只是模拟转账,所以还有许多需要检验的地方并没有实现。但是,至少需要保证转账金额是不少于账户余额或者转账金额为负数。当你输入的转账金额为该类情况时,程序将无法进行转账操作,并提示转账失败,如图13-5所示:图13-5转账失败SessionSession与事务范围与事务范围SessionFactory是一个重量级的对象,创建一个SessionFactory对象需要消耗很多的资源。但它却是线程安全的,在应用程序中被所有的线程所共享。通常在应用中,它只

4、能被创建一次,即在应用程序启动时,由Configuration的实例来创建。创建一个Session所消耗的资源是比较小的,但它却是非线程安全的,对于单个请求,单个会话,单个工作单元而言,它只被使用一次就应该被丢弃。只有在需要的时候,一个Session对象才会获取一个JDBC的Connection对象。因此在不使用的时候,Session是不会消耗任何资源的。在创建Hibernate会话时,应注意以下几个问题:对于一个数据库链接,不要创建一个以上的Session或Transaction。对于一个数据库链接、一个事务使用多个Session时,需要

5、格外地小心,Session对象会记录下调入数据更新的情况,所以另一个Session对象可能会遇到过时的数据。Session不是线程安全的,绝不要在两个并发的线程中访问同一个Session。一个Session一般只对应一批需要一次性完成的操作单元。事务概念与声明事务边界事务概念与声明事务边界数据库事务的概念事务是指一组相互依赖的操作行为,例如现在比较流行的网上购物或通过ATM机进行银行转账等。事务的成功取决于这一组相互依赖的操作行为都执行成功,如果这一组行为中某一个操作行为失败了,就意味着整个事务失败。数据库事务必须具备ACID特征:(1)A就

6、是Atomic(原子性):是指整个数据库事务是一个不可分割的工作单元,只有事务中每个操作都执行成功后,事务才算成功。(2)C就是Consistency(一致性):是指数据库事务不能破坏数据的完整性和业务逻辑的一致性。(3)I就是Isoloation(隔离性):在并发环境中,当不同的事务操作相同的数据时,都应该有自己的一个完整的数据空间。(4)D就是Durability(持久性):指的是事务只要操作成功,它对数据库的修改就永久保存下来。通过JDBCAPI声明事务边界在JDBCAPI中,java.sql.Connection类代表了一个数据库连接,

7、它提供了一些用于控制事务的方法,其具体函数功能如下:setAutoCommit(booleanautoCommit):设置是否自动提交事务。commit():提交事务。rollback():撤消事务。在默认情况下,新创建的Connection实例会采用自动提交事务模式。我们也可以通过调用它的setAutoCommit(booleanautoCommit)方法来设置手工提交事务的模式,然后把多条更新数据的SQL语句作为一个事务。当所有操作完成后再调用commit()提交事务。如果有某条SQL语句执行失败,系统就会抛出SQLException

8、异常,我们可以在捕获异常的代码中调用rollback()方法来撤销事务,通过HibernateAPI声明事务边界Hibernate对JDBC作了轻量级

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

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

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