[color=blue][size=large]这是DAO里的一些方法, package dao;
import java.util.List;
import po.*;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class TestDAO {
public void Test1() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
View1 view = (View1) session.get(View1.class, new Long(1));
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
view.setName("xxxxxxxxxaaa");
session.update(view);
tra.commit();
tools.close();
}
public void Test2() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
View1 view = (View1) session.get(View1.class, new Long(1));
view.setName("xxxxxxxxxaaaaaaa");
session.update(view);
tra.commit();
tools.close();
}
public void Test3() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
View1 view = (View1) session.get(View1.class, new Long(1),
LockMode.UPGRADE);
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
view.setName("xxxxxxxxx");
session.update(view);
tra.commit();
tools.close();
}
public void Test4() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
Query query = session
.createQuery("update view1 set name ='张三丰' where id =1");
query.setLockMode("p", LockMode.UPGRADE);
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tra.commit();
tools.close();
}
public void Test5() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
Query query = session.createQuery("from view1 where id =1");
query.setLockMode("p", LockMode.UPGRADE);
List list = query.list();
for (int i = 0; i < list.size(); i++) {
View1 v = (View1) list.get(i);
System.out.println(v.getName());
}
tra.commit();
tools.close();
}
public void Test6() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
Query query = session.createQuery("insert into view1(name) values('王五')");
query.setLockMode("p", LockMode.UPGRADE);
List list = query.list();
for (int i = 0; i < list.size(); i++) {
View1 v = (View1) list.get(i);
System.out.println(v.getName());
}
tra.commit();
tools.close();
}
}
]这是一个工具类:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateTools {
static SessionFactory sf = null;
static Session session = null;
public SessionFactory getSF() {
if (sf == null) {
Configuration cfg = new Configuration()
.configure();
sf = cfg.buildSessionFactory();
}
return sf;
}
public Session getSession() {
if (session == null) {
session = getSF().openSession();
}
return session;
}
public void close() {
if (session != null) {
session.close();
}
if (sf != null) {
sf.close();
}
}
}
[size=xx-large]这是几个Main方法来测试,[/size]import dao.TestDAO;
public class Test1 {
public static void main(String[] args) {
TestDAO dao = new TestDAO();
System.out.println("休息了20秒才去执行update方法");
dao.Test1();
}
}
..................等等都是类似的!
这样就可以仿真的测试到乐观锁与悲观锁在操作数据库时看到的深层次的东西了 [/size][/color[size=xx-large
import java.util.List;
import po.*;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class TestDAO {
public void Test1() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
View1 view = (View1) session.get(View1.class, new Long(1));
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
view.setName("xxxxxxxxxaaa");
session.update(view);
tra.commit();
tools.close();
}
public void Test2() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
View1 view = (View1) session.get(View1.class, new Long(1));
view.setName("xxxxxxxxxaaaaaaa");
session.update(view);
tra.commit();
tools.close();
}
public void Test3() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
View1 view = (View1) session.get(View1.class, new Long(1),
LockMode.UPGRADE);
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
view.setName("xxxxxxxxx");
session.update(view);
tra.commit();
tools.close();
}
public void Test4() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
Query query = session
.createQuery("update view1 set name ='张三丰' where id =1");
query.setLockMode("p", LockMode.UPGRADE);
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tra.commit();
tools.close();
}
public void Test5() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
Query query = session.createQuery("from view1 where id =1");
query.setLockMode("p", LockMode.UPGRADE);
List list = query.list();
for (int i = 0; i < list.size(); i++) {
View1 v = (View1) list.get(i);
System.out.println(v.getName());
}
tra.commit();
tools.close();
}
public void Test6() {
HibernateTools tools = new HibernateTools();
Session session = tools.getSession();
Transaction tra = session.beginTransaction();
tra.begin();
Query query = session.createQuery("insert into view1(name) values('王五')");
query.setLockMode("p", LockMode.UPGRADE);
List list = query.list();
for (int i = 0; i < list.size(); i++) {
View1 v = (View1) list.get(i);
System.out.println(v.getName());
}
tra.commit();
tools.close();
}
}
]这是一个工具类:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateTools {
static SessionFactory sf = null;
static Session session = null;
public SessionFactory getSF() {
if (sf == null) {
Configuration cfg = new Configuration()
.configure();
sf = cfg.buildSessionFactory();
}
return sf;
}
public Session getSession() {
if (session == null) {
session = getSF().openSession();
}
return session;
}
public void close() {
if (session != null) {
session.close();
}
if (sf != null) {
sf.close();
}
}
}
[size=xx-large]这是几个Main方法来测试,[/size]import dao.TestDAO;
public class Test1 {
public static void main(String[] args) {
TestDAO dao = new TestDAO();
System.out.println("休息了20秒才去执行update方法");
dao.Test1();
}
}
..................等等都是类似的!
这样就可以仿真的测试到乐观锁与悲观锁在操作数据库时看到的深层次的东西了 [/size][/color[size=xx-large