package cn.hxex.hibernate.lock;
import java.net.URL;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class LockMain extends Thread{
private static Log log = LogFactory.getLog( LockMain.class );
// 静态Configuration和SessionFactory对象的实例(全局唯一的)
private static Configuration configuration;
private static SessionFactory sessionFactory;
static
{
// 从默认的配置文件创建SessionFactory
try
{
URL configURL = ClassLoader.getSystemResource( "cn/hxex/hibernate/lock/hibernate.cfg.xml" );
// 创建默认的Configuration对象的实例
configuration = new Configuration();
// 读取hibernate.properties或者hibernate.cfg.xml文件
configuration.configure( configURL );
// 使用静态变量来保持SessioFactory对象的实例
sessionFactory = configuration.buildSessionFactory();
}
catch (Throwable ex)
{
// 输出异常信息
log.error("Building SessionFactory failed.", ex);
ex.printStackTrace();
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public void testPessimisticLock() {
SessionFactory sf = LockMain.getSessionFactory();
Session session = sf.getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("from User user");
query.setLockMode("user", LockMode.UPGRADE);
List users = query.list();
for( int i=0; i<users.size(); i++ ) {
System.out.println( users.get( i ) );
}
session.getTransaction().commit();
}
public void testOptimisticLock() {
SessionFactory sf = LockMain.getSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
User userV1 = (User)session.load( User.class, "1" );
// 等第二个进程执行
try {
sleep( 3000 );
} catch (InterruptedException e) {
e.printStackTrace();
}
userV1.setAge(new Integer(32));
tx.commit();
session.close();
}
public void run() {
testOptimisticLock();
}
public static void main(String[] args) {
// LockMain main = new LockMain();
// main.testPessimisticLock();
LockMain main1 = new LockMain();
main1.start();
LockMain main2 = new LockMain();
main2.start();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Struts,Hibernate,Spring集成开发宝典光盘资料10.rar (30个子文件)
hibernate
src
cn
hxex
hibernate
lock
User.java 617B
User.hbm.xml 620B
LockMain.java 3KB
hibernate.cfg.xml 2KB
cache
User.java 701B
User.hbm.xml 555B
CacheMain.java 2KB
QueryCacheMain.java 2KB
hibernate.cfg.xml 2KB
mapping
MappingMain.java 3KB
model
Parent.hbm.xml 510B
Child.hbm.xml 435B
Role.java 391B
Child.java 700B
User.java 394B
User.hbm.xml 527B
Parent.java 781B
Role.hbm.xml 542B
hibernate.cfg.xml 2KB
ehcache.xml 457B
lib
mysql-connector-java-3.1.10-bin.jar 409KB
jta.jar 9KB
hibernate3.jar 1.99MB
commons-logging-1.0.4.jar 37KB
ehcache-1.2.3.jar 203KB
antlr.jar 350KB
commons-collections-2.1.1.jar 171KB
dom4j-1.6.1.jar 307KB
asm.jar 26KB
cglib-2.1.3.jar 276KB
共 30 条
- 1
资源评论
assjjwz147
- 粉丝: 10
- 资源: 107
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功