Hibernate 的事务特性

原创 2018年04月15日 12:51:35
Hibernate的任何对数据有改动的操作,都应该被放在事务里面. 

在事务中的多个操作行为,要么都成功,要么都失败

TestHibernate 事务:

hibernate中的事务由s.beginTransaction();开始

由s.getTransaction().commit();结束

本例子,执行了两个操作

第一个,删除id=1的产品,这个是会成功的

第二个,修改id=2的产品,使得其产品名称超过了数据库中设置的长度30,这个是会失败的。

因为这两个操作都是在一个事务中,而且第二个操作失败了,所以最后的结果是两个操作都没有生效

代码如下:

package com.how2java.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.how2java.pojo.Product;

public class TestHibernate {
	public static void main(String[] args) {
		SessionFactory sf = new Configuration().configure().buildSessionFactory();
		Session s = sf.openSession();
		s.beginTransaction();
                //核心代码
		Product p = (Product) s.get(Product.class, 1);
		s.delete(p);
		Product p2 = (Product) s.get(Product.class, 2);
		p2.setName("长度超过30的字符串作为产品名称长度超过30的字符串作为产品名称长度超过30的字符串作为产品名称长度超过30的字符串作为产品名称");
		s.update(p2);

		s.getTransaction().commit();
		s.close();
		sf.close();
	}
}

 MYSQL 表的类型必须是INNODB才支持事务

在Mysql中,只有当表的类型是INNODB的时候,才支持事务,所以需要把表的类型设置为INNODB,否则无法观察到事务.

修改表的类型为INNODB的SQL:

alter table product_ ENGINE  = innodb;

查看表的类型的SQL:

show table status from test; 
不过有个前提,就是当前的MYSQL服务器本身要支持INNODB。


Hibernate事务的属性

事务的属性有且仅有下面这五种配置,分别是隔离级别、传播行为、只读提示、超时时间、回滚设置。文章末尾我会加上一两种spring配置事务的代码。 1、事务的隔离级别(isolation): 隔离...
  • u010584063
  • u010584063
  • 2015-06-28 22:15:13
  • 1002

事务的概念和四大特性以及事务的隔离级别

事务事务:是用户定义的一个操作序列。这些操作,要么都做,要么都不做。是一个不可分割的工作单位。通过事务,数据库可以把逻辑相关的一组操作绑定在一起,以便数据库服务器保持数据的完整性。事务通常是以BEGI...
  • zwq1232113457
  • zwq1232113457
  • 2016-12-03 10:43:56
  • 2593

事务的传播特性和隔离级别理解

事务的几种传播特性 1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启 2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持...
  • zmx729618
  • zmx729618
  • 2015-11-12 16:44:24
  • 602

事务的四大特性和隔离级别

事务,其定义是应用程序中一系列不可分割的操作,就是一组可以完成某个业务的代码集合,在关系数据库中,事务可以是一条SQL语句,或者一组SQL语句,亦或整个程序。...
  • u012012621
  • u012012621
  • 2016-03-03 12:26:33
  • 2213

Spring整合Hibernate,事务的几种传播特性,数据库事务隔离级别(脏读幻读不可重复读)

一、Spring整合Hibernate 1.添加jar:Hibernate的jar包,数据库连接的,spring 3.0 core 注意jar的冲突   2.applicationContext.xm...
  • lixiao1048
  • lixiao1048
  • 2016-06-22 14:07:33
  • 1326

springmvc hibernate事务管理read-only属性

在利用freemarker做网页静态化中遇到的一个小问题。程序的逻辑大致是,当用户提交网页静态化请求时,会从数据库读取新闻纪录,查看对应的html路径是否存在,如果存在就将html文件删除然后重新生成...
  • u013534063
  • u013534063
  • 2016-04-11 22:59:02
  • 1543

对Hibernate中的事务理解

1.数据库事务的概念 数据库事务是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元。    在并发环境中,多...
  • DD_lemon
  • DD_lemon
  • 2015-12-17 09:45:30
  • 8275

SSH(三)---Hibernate事务传播行为种类

注:本文是答5.hibernate事务传播行为种类 的,仅为了自己学习,向原博主致敬。原博文网址: http://www.cnblogs.com/sunniest/p/4646515.html ...
  • u014656992
  • u014656992
  • 2016-03-06 21:00:32
  • 1849

事务的四大特性(ACID)

事务的概念:事务是指逻辑上的一组操作,这组操作要么同时完成要么同时不完成.        事务的管理:默认情况下,数据库会自动管理事务,管理的方式是一条语句就独占一个事务.           ...
  • n14789
  • n14789
  • 2015-03-15 10:16:03
  • 717

我对事务四大特性的认识和理解

一. 首先,我们需要知道事务的四大特性有哪些?            1. 原子性(Atomicity)                               原子性是指事务包含的所有操作要...
  • qq_36074042
  • qq_36074042
  • 2017-01-16 14:12:59
  • 1377
收藏助手
不良信息举报
您举报文章:Hibernate 的事务特性
举报原因:
原因补充:

(最多只允许输入30个字)