现在的位置: 首页 > 综合 > 正文

HibernateWork12

2014年02月27日 ⁄ 综合 ⁄ 共 1051字 ⁄ 字号 评论关闭

1.阐述事务管理的步骤

服务器端在接收到用户的请求后,会创建一个新的Hibernate Session对象,然后通过该Session对象开始一个新的事务并且之后所有对数据库的操作都通过该Session对象来进行。最后,完成将响应页面发送到客户端的工作后再提交事务并且关闭Session

2.解释并发引起的各种问题

1)第一类丢失更新:撤销一个事物时,把其它事物已提交的更新数据也撤销了

2)脏读:一个事务读到另一个事务未提交的更新数据。

3)不可重复读:一个事务读到另一个事务已经提交的更改数据。

4)第二类丢失更新:一个事务覆盖另一个事务已经提交的更新数据。

5)幻读:一个事务读到另一个事务已经提交的新增或以删除数据。

3.编写程序来演示乐观锁的作用

public void testTx1() {

Session session = HibernateSessionFactory.getSession();

Transaction tx = session.beginTransaction();

Student stu = null;

try {

stu = (Student)session.get(Student.class, 1);

System.out.println(stu.getName());

System.out.println("version=" + stu.getVersion());

stu.setName("在第一个事务中修改");

session.getTransaction().commit();

catch (HibernateException he) {

tx.rollback();

he.printStackTrace();

}

session.close();

// 操作完毕

System.out.println("tx1操作完成后------");

System.out.println(stu.getName());

System.out.println("version=" + stu.getVersion());

}

4.叙述悲观锁的实现原理及使用步骤

悲观锁是假定当前事务操作数据资源时,一定有其他事务同时访问该数据资源,所以先锁定资源。

一般实现方式是由数据库来实现,采用独占锁来锁定资源。使用get()load(),是可以显示指定锁定模式:LockMode.UPGRADE

        Session.get(Student.class,1,LockMode.UPGRADE);

抱歉!评论已关闭.