HibernateWork12

1.阐述事务管理的步骤

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

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

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

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

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

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

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

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

publicvoidtestTx1(){

Sessionsession=HibernateSessionFactory.getSession();

Transactiontx=session.beginTransaction();

Studentstu=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(HibernateExceptionhe){

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值