第十章J2EEHibernate高级特性乐观锁.docx

上传人:b****1 文档编号:18004628 上传时间:2023-04-24 格式:DOCX 页数:7 大小:3.05MB
下载 相关 举报
第十章J2EEHibernate高级特性乐观锁.docx_第1页
第1页 / 共7页
第十章J2EEHibernate高级特性乐观锁.docx_第2页
第2页 / 共7页
第十章J2EEHibernate高级特性乐观锁.docx_第3页
第3页 / 共7页
第十章J2EEHibernate高级特性乐观锁.docx_第4页
第4页 / 共7页
第十章J2EEHibernate高级特性乐观锁.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

第十章J2EEHibernate高级特性乐观锁.docx

《第十章J2EEHibernate高级特性乐观锁.docx》由会员分享,可在线阅读,更多相关《第十章J2EEHibernate高级特性乐观锁.docx(7页珍藏版)》请在冰豆网上搜索。

第十章J2EEHibernate高级特性乐观锁.docx

第十章J2EEHibernate高级特性乐观锁

Hibernate高级特性

1.Hibernate事务管理

2.悲观锁和乐观锁

3.Hibernate回调机制

4.Hibernate拦截器

1.事务管理

Hibernate只是将事务的管理和调度工作委托给底层的JDBC或者JTA

默认情况默认使用的是JDBC事务,

只能对单一数据库操作

Transactionts=session.beginTransaction();

mit();

ts.rollback();

Hibernate把事务委托给JTA管理,可以跨多个jdbc连接

配置hibernate配置文件P292

二悲观锁和乐观锁

◆认为在每次数据操作时,其他客户端程序也会操作同样的数据

◆对操作的数据进行锁定,直到自己操作完成后解除锁

◆悲观锁的实现,依赖于数据库本身的锁机制

读取数据时候将其锁定,然后在修改:

select*fromCUSTOMERwhereC_ID=1forupdate

弊端:

(如果当前操作人忘记提交了)其他操作不能对当前操作的数据进行访问,对大量用户访问系统是回造成性能问题

典型悲观锁案例:

select*fromcustomerwherec_id=1forupdate

不提交,打开另外一个sql窗口,执行下面修改语句:

updatecustomersetc_name='lll'wherec_id=1

只有当上面的查询commit了才会执行

悲观锁案例:

在读取之前锁定

乐观锁:

◆更为宽松的加锁机制

◆不在数据库层次上进行锁定

◆乐观锁应用程序通过实现数据版本号进行控制

1.在数据库表增加verson字段

altertablecustomer

add(versonnumber(7,2));

2.实体类中增加属性

3.映射文件中在id之后配置verson

案例:

往数据库修改信息,verson更新了每次加一

案例二:

当两个人同时读取数据修改,第一个人修改完提交后,版本改完1,那么第二个人提交版本与他之前读取的版本不同了,提交发送错误

三:

hibernate中的回调

处理hibernate中增删改查过程的自然回调(类似于web中的session监听)

1.实现LifeCycle接口

首先执行onLoad方法

有没有办法不需要实体类来实现接口,解决侵入性的代码。

Hibernate中引入拦截器的概念,session的持久化都首先需要经过拦截器,在session创建时就指定加载相应的拦截器

1.建一个类实现Interceptor拦截器

2.实现监听方法

测试

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

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1