`
cakin24
  • 浏览: 1335648 次
  • 性别: 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.doc

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

    介绍Hibernate+Transaction+myeclipse6+事例的应用参考工程源码.

    spring-hibernate-maven-transaction整合

    spring-hibernate-maven-transaction整合

    Hibernate_Session_Transaction

    可以对hibernate的 Session 和 Transaction 有更深入的认识 希望对一些概念比较模糊的人 有帮助

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

    该软件依赖包,为实例spring aop实现Hinernate事务操作软件包

    HibernateSession , Transaction 研究

    NULL 博文链接:https://stewchicken.iteye.com/blog/938875

    Hibernate学习笔记和资料

    hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...

    Hibernate Web应用的开发步骤

    Hibernate Web应用的开发一般经过以下几个步骤: (1)创建数据库。 (2)将Hibernate所需的JAR包复制到WEB-...(8)通过创建的Transaction实例进行事务管理。 (9)通过创建的Query或Criteria实例实现数据库的查询。

    Hibernate所需jar包

    antlr-2.7.7 c3p0-0.9.2.1 dom4j-1.6.1 hibernate-c3p0-4.3.5.Final hibernate-commons-annotations-...jboss-transaction-api_1.2_spec-1.0.0.Final mchange-commons-java-0.2.3.4 mysql-connector-java-5.1.30-bin

    基于dubbo和hibernate的例子

    基于dubbo和hibernate的分层例子,并有一个dubbo client模拟消费者

    Hibernate稳定版(hibernate-release-5.2.18.Final.zip)

    Hibernate稳定版(hibernate-release-5.2.18.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。

    hibernate4.3完整jar包

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

    Hibernate体系结构的概要图

    Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务...

    Beginning Hibernate: For Hibernate 5

    The book keeps its focus on Hibernate without wasting time on nonessential third-party tools, so you’ll be able to immediately start building transaction-based engines and applications. Experienced ...

    hibernate.properties

    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WebSphereTransactionManagerLookup #hibernate.transaction.manager_lookup_class org.hibernate.transaction....

    hibernate 4 核心依赖包(hibernate lib required)

    jboss-transaction-api_1.1_spec-1.0.1.Final jboss-logging-3.1.0.GA javassist-3.18.1-GA javassist-3.18.1-GA hibernate-core-4.2.21.Final hibernate-commons-annotations-4.0.2.Final dom4j-1.6.1 antlr-2.7.7

    hibernate基础jar包

    hibernate基础jar包。包含junit,antlr,don4j,hibernate-commons-annotations,hibernate-core,hibernate-jpa-api,javassit,jboss-logging,jboss-transaction-api

    Beginning.Hibernate.For.Hibernate.5.4th.Edition

    The book keeps its focus on Hibernate without wasting time on nonessential third-party tools, so you’ll be able to immediately start building transaction-based engines and applications. Experienced ...

    最新Hibernate jar 架包(9个)

    jta.jar 当使用JTA规范时,必须加入,JTA全称是 Java Transaction API (java 事务 API),一般情况下也是必须的. slf4j-api-1.6.1.jar 这个包是必须的,因为在Hibernate的核心包中多处用到了,比如Configuration.class中用...

    使用Maven Hibernate5 之Spring整合

    在准备整合Spring之前,也在网上看了各种配置。但是楼主心里还是很纠结,...楼主还是一步一步的来吧,感觉Spring操作Hibernate还是离不开DataSource,SessionFactory,Transaction这几个要素。 详细说明看我的博客文章。

Global site tag (gtag.js) - Google Analytics