首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate学习札记(九)【高级篇】并发、Session管理

2012-11-11 
Hibernate学习笔记(九)【高级篇】并发、Session管理数据库事务级别 以及对应 Hibernate事务码先查 mysqlsele

Hibernate学习笔记(九)【高级篇】并发、Session管理

数据库事务级别 以及对应 Hibernate事务码

先查 mysql>select @@tx_isolation

设置 mysql>set global transaction isolation level read committed

注意需要配置需要房子<id>标签后面,加载时版本是0,保存该对象set version =1where version = 0

所以保存时,如果数据库变化了就保存不进,抛异常,需捕获哦。

?

乐观的时间戳

<timestamp name = "lastUpdateTime" column="lastUpdateTime">其他说明和版本控制一样

但是只能精确到秒,所以你懂的

?

乐观锁其他

<class name="Monkey" table="MONKEY" optimistic-lock="dirty" dynamic-update="true">

如你改其中一个叫COUNT的字段,查出来时是100,保存为101时

向数据发 update MONKEY setCOUNT=101 whereCOUNT=100

optimistic-lock dynamic-update 需同时有,且是在一个session内的操作

?

管理Session

session =sessionFactory.getCurrentSession().openSession();session.setFlushMode(FlushMode.MANUAL)//手动提交ManagedSessionContext.bind(session) //需要先为该线程绑定sessionsession.beginTransaction()。。。某某查询//解除与当前线程的绑定ManagedSessionContext.unbind(sessionFactory.getCurrentSession()) //判断与当前线程的绑定情况//ManagedSessionContext.hasbind(sessionFactory.getCurrentSession()) session.transaction().commit();//释放数据库连接,等待用户其他事。。。某某等待时间ManagedSessionContext.bind(session) //需要先为该线程绑定sessionsession.beginTransaction();//重新分配数据连接。。。某某更新ManagedSessionContext.unbind(sessionFactory.getCurrentSession()) sessiom.flush();//手动更新数据session.transaction().commit();

?

热点排行