java hibernate事务处理_JavaWeb_(Hibernate框架)Hibernate中事务

Hibernate中事务

事务的性质

事物的隔离级别

配置事务的隔离级别

事务的性质

原子性:原子,不可再分,一个操作不能分为更小的操作,要么全都执行,要么全不执行。

一致性:事务在完成时,必须使得所有的数据保持一致的状态。(与开始事务保持前一样的状态)

隔离性:事务查看数据时数据所处的状态,要么是另一个并发事务修改它之前的状态,要么是另一并发事务修改它之后的状态,事务不会查看中间状态的数据。

持久性:事务完成之后,它对于系统的影响是永久性的。(执行了就执行了,没有撤回(悔棋)的说法)

事务的隔离级别

脏读:读取了未提交事务中的数据

不可重复复读:对于数据库中的某个数据,一个事务范围内多次读取同一个数据,却有不同的值

幻读:一个事务读到另一个事务新增加并提交的数据(insert)。在同一个事务中,对于同一组数据读取到的结果不一致

3ae1c74aeedc2ba3da12d4523372a909.png

配置事务的隔离级别

读未提交: 最低的隔离级别,最没用(最快)

读已提交: 可避免脏读,不能避免不可重复读

可重复度: 可以避免不可重复读,可以避免脏读(mysql默认)

串行化: 最强大,三种都可以解决(最慢)

项目中在hibernate.cfg.xml配置事务的隔离级别【mysql数据库中默认是配置4:可重复读】

4

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

com.mysql.jdbc.Driver

jdbc:mysql:///hibernatest

root

123456

org.hibernate.dialect.MySQLDialect

true

true

create

4

hibernate.cfg.xml

实现HibernateUtils.java工具类:使用工厂模式将开启Hibernate事务代码提取出来

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.Gary.utils;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;public classHibernateUtils {private static SessionFactory sessionFactory = null;static{//得到配置信息

Configuration config = newConfiguration().configure();//获得sessionFactiory工厂

sessionFactory =config.buildSessionFactory();

}//获得全新的Session

public staticSession getSession()

{

;//获取session

Session session =sessionFactory.openSession();returnsession;

}public staticSession getCurrentSession()

{returnsessionFactory.getCurrentSession();

}

}

HibernateUtils.java

使用HibernateUtils.java打开事务

Session session =HibernateUtils.getSession();//打开事务

Transaction transcation = session.beginTransaction();

使用HibernateUtils.java实现向数据库中用户注册事务

//增加用户

public voidaddUser(User user) {

Session session=HibernateUtils.getSession();//打开事务

Transaction transcation =session.beginTransaction();//存储user对象save 只是为了生成id//有id,与session有关联,持久化状态//存储user对象

session.save(user); //有id,与session关联 持久化状态 本质:对象状态的转换//将瞬时->持久 目的:生成id//提交事务

transcation.commit();//关闭资源

session.close(); //没有与session关联,有id

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值