hibernate_transaction事务

transaction简介

hibernate对于数据的操作都是封装在事务当中,并且是默认非自动提交的方式。所以session保存对象时,如果不开启事务,并切手工提交事务,对象不会真正的保存在数据库中。

如果想要hibernate像jdbc那样自动提交事务,必须调用session对象的dowork()方法,获得jdbc的connection后,设置其自动提价事务模式。(不推荐

 

package test;

import static org.junit.Assert.*;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.InitialContext;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.jdbc.Work;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import pojo.Student;

public class testSavestudent {
	
	private Session session;
	private Transaction transaction;
	
	@Before
	public void init(){
		//加载配置文件
		
				Configuration configuration =  new Configuration().configure();
				
				//创建session工厂
				
				SessionFactory sessionFactory = configuration.buildSessionFactory();
				
				//创建session对象
				session = sessionFactory.openSession();
				
				//开启事务
				/*
				transaction =session.beginTransaction();*/
	}

	@Test
	public void test() {
	 
		Student student = new Student("张五",4);
		
		//当不使用transaction事务提交的时候用session自带的dowork实现自动提交哦。
		session.doWork(new Work() {
			
			@Override
			public void execute(Connection connection) throws SQLException {
				// TODO Auto-generated method stub
				connection.setAutoCommit(true);
			}
		});
		session.save(student);
		
		
	}

	@After
	public void destory(){
		
		/*transaction.commit();*/
		session.flush();
		session.close();
		
		
	}
}

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="Mysession">
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">123456</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/studb</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--  -->
        <property name="show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">create</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--   实体创建表 对于生成表的自动映射   -->
         <mapping resource="pojo/Student.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值