`
cakin24
  • 浏览: 1388900 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

hibernate的transaction简介

阅读更多
一 简介
1、hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式,所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。
2、如果想让hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式。(注意:通常并不推荐这样做)
 
二 当将开启事务和提交事务关闭
        public void init(){
            // 创建配置对象  
            Configuration config = new Configuration().configure();
            //config.addClass(Students.class);
            // 创建服务注册对象
            ServiceRegistry serviceRegistery = new          ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
            // 创建会话工厂对象
            sessionFactory = config.buildSessionFactory(serviceRegistery);
            // 创建会话对象
            session = sessionFactory.openSession();
            // 开启事务
            //transaction = session.beginTransaction();
        }
        
        @After
        public void destory(){
            // 提交事务
            //transaction.commit();
            // 关闭会话
            session.close();
            // 关闭会话工厂
            sessionFactory.close();
        }
不开启事务就不能将对象保存到数据库中!
控制台输出:
Hibernate:
    drop table if exists STUDENTS
Hibernate:
    create table STUDENTS (
        SID integer not null,
        SNAME varchar(255),
        GENDER varchar(255),
        BIRTHDAY datetime,
        ADDRESS varchar(255),
        primary key (SID)
    )
九月 17, 2017 5:35:15 下午 org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
 
三 设置自动提交方式
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.jdbc.Work;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//测试类
public class StudentsTest {
    
    private SessionFactory sessionFactory;
    private Session session;
    private Transaction transaction;
    @Before
    public void init(){
        // 创建配置对象   
        Configuration config = new Configuration().configure();
        //config.addClass(Students.class);
        // 创建服务注册对象
        ServiceRegistry serviceRegistery = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        // 创建会话工厂对象
        sessionFactory = config.buildSessionFactory(serviceRegistery);
        // 创建会话对象
        session = sessionFactory.openSession();
        // 开启事务
        //transaction = session.beginTransaction();
    }
    
    @After
    public void destory(){
        // 提交事务
        //transaction.commit();
        // 关闭会话
        session.close();
        // 关闭会话工厂
        sessionFactory.close();
    }
    
    @Test
    public void testSaveStudents(){
        Students s= new Students(1,"张三丰","男",new Date(),"武当山");
        session.doWork(new Work(){
            @Override
            public void execute(Connection connection) throws SQLException {
                // TODO Auto-generated method stub
                connection.setAutoCommit(true);
            }
            
        });
        session.save(s);
        session.flush();
    }
}
控制台输出:
Hibernate:
    drop table if exists STUDENTS
Hibernate:
    create table STUDENTS (
        SID integer not null,
        SNAME varchar(255),
        GENDER varchar(255),
        BIRTHDAY datetime,
        ADDRESS varchar(255),
        primary key (SID)
    )
九月 17, 2017 5:46:00 下午 org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
Hibernate:
    insert
    into
        STUDENTS
        (SNAME, GENDER, BIRTHDAY, ADDRESS, SID)
    values
        (?, ?, ?, ?, ?)

 

 
1
0
分享到:
评论

相关推荐

    Could not roll back Hibernate transaction.doc

    Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed 这表明Hibernate事务回滚操作失败,导致事务不能正确回滚。 二、问题原因 该问题的...

    软件依赖包(Spring AOP+Hibernate Transaction)

    本资源提供的"软件依赖包(Spring AOP+Hibernate Transaction)"正是这样一种集合,它包含了Spring AOP和Hibernate Transaction管理的jar文件,使得开发者能够便捷地在Java应用中实现面向切面的编程(AOP)以及事务...

    Hibernate+Transaction+myeclipse6+事例+工程源码.rar

    《深入理解Hibernate+Transaction在MyEclipse6中的应用实践》 在现代的Java Web开发中,数据持久化是一个至关重要的环节。Hibernate作为一种流行的Object-Relational Mapping(ORM)框架,极大地简化了数据库操作,...

    spring-hibernate-maven-transaction整合

    【Spring与Hibernate、Maven和Transaction的整合】 在现代Java Web开发中,Spring框架、Hibernate持久化工具和Maven构建工具是不可或缺的部分。Spring提供了强大的依赖注入和面向切面编程能力,Hibernate则简化了...

    Hibernate_Session_Transaction

    在Java的持久化框架Hibernate中,`Session`和`Transaction`是两个至关重要的概念,它们在数据管理和事务处理中起到核心作用。这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与...

    HibernateSession , Transaction 研究

    本文将深入研究Hibernate中的`Session`和`Transaction`,这两个概念是理解Hibernate工作原理的关键。 首先,让我们了解`Session`。在Hibernate中,`Session`充当了应用程序与数据库之间的桥梁,它是持久化操作的...

    详解Hibernate事务处理机制

    通过配置`hibernate.transaction.factory_class`为`net.sf.hibernate.transaction.JTATransactionFactory`来启用JTA事务。 ```properties hibernate.transaction.factory_class=...

    hibernate基础jar包

    9. 第三方库依赖:Hibernate自身依赖于其他库,如JTA(Java Transaction API)用于处理事务,JPA规范库,以及一些日志和反射相关的库,这些可能在压缩包中也有包含。 10. 测试实践:结合Junit4,开发者可以编写针对...

    hibernate简介及特例

    【Hibernate简介及特性】 Hibernate是一个Java开发中的对象关系映射(ORM)框架,它提供了将数据库操作转化为面向对象的方式,让开发者可以更加便捷地进行数据持久化操作。Hibernate基于JDBC,但对JDBC进行了封装,...

    hibernate3必要jar包

    1. **Hibernate3简介**:Hibernate3是Hibernate项目的第三个主要版本,它提供了一种对象关系映射(ORM)解决方案,允许开发人员使用面向对象的编程模型来处理关系数据库。它的目标是减少数据库访问的复杂性,提高...

    hibernate配置参数大全

    hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup ``` #### 三、方言配置(Dialect) 方言配置是Hibernate与不同类型的数据库进行交互的基础,它决定了...

    hibernate aip hibernate aip

    Hibernate的核心组件包括Configuration、SessionFactory、Session、Transaction和Query。Configuration负责读取配置文件并初始化SessionFactory,SessionFactory是线程安全的,用于创建Session实例。Session是与...

    hibernate3.zip 包含hibernate3.jar

    6. **事务管理**:Hibernate支持JTA(Java Transaction API)和JDBC事务管理。通过`Session`的`beginTransaction()`、`commit()`和`rollback()`方法,可以方便地控制事务的边界。 7. **缓存机制**:Hibernate包含一...

    hibernate学习资料大全

    在Hibernate中,事务处理是通过Session的beginTransaction()、commit()和rollback()方法实现的。了解事务的ACID特性以及如何在Hibernate中处理事务,可以确保数据的一致性。 7. **一对多、多对一、多对多关联映射*...

    Hibernate3的依赖包

    4. **Transaction管理**:Hibernate支持JTA(Java Transaction API)和JDBC事务,确保数据操作的原子性和一致性。 5. **第二级缓存**:除了默认的一级缓存(Session级别),Hibernate还支持二级缓存,这可以显著...

    hibernate3全部jar包:hibernate3.jar.zip 下载

    hibernate3.jar是主要的Hibernate库文件,包含了框架的核心组件,包括Entity管理、Session接口、Transaction管理、Query服务等。这个单一的JAR文件使开发人员能够快速地在项目中集成Hibernate3,而不必逐个添加众多...

    Hibernate简介.doc

    5. **事务处理**: Hibernate 支持 JTA(Java Transaction API)和 JDBC 事务处理,确保数据操作的原子性和一致性。 **其他 ORM 工具对比** - **Struts**: Struts 是一个 MVC(Model-View-Controller)框架,主要...

    深入浅出 Hibernate.pdf

    3. **Transaction**: 事务是数据库操作的基本单位,Hibernate通过Transaction接口提供对事务的支持。 4. **Mapping**: Hibernate通过映射文件(如*.hbm.xml文件)或者注解来定义Java对象与数据库表之间的映射关系。 ...

    hibernate4.3完整jar包

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java...Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。

    hibernate和MySQL的jar

    8. **事务管理**: Hibernate支持事务管理,可以使用`Transaction`接口来控制事务的开始、提交和回滚。 9. **第一级缓存与第二级缓存**: Hibernate默认提供一级缓存(Session级别的),可选配二级缓存...

Global site tag (gtag.js) - Google Analytics