• spring,hibernate配置事务


    1. 新建java project

    2. 引入jar

    3. src下新建package:com.web.model, com.web.dao, com.web.service, bean.xml

    4. model下新建User.java   

    package com.web.model;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    @Entity
    public class User {
    	@Id
    	@GeneratedValue
    	private int id;
    	
    	@Column(length=32)
    	private String name;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    }
    

     dao下新建interface  IUserDao.java

    package com.web.dao;
    
    import com.web.model.User;
    
    public interface IUserDao {
    	public void save(User user);
    }
    

     dao下新建接口的实现类 UserDao.java

     注意:

    1. @Repository

    2. @Resource 植入sessionfactory

    package com.web.dao;
    
    import javax.annotation.Resource;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.springframework.stereotype.Repository;
    import org.springframework.web.bind.annotation.SessionAttributes;
    
    import com.web.model.User;
    
    @Repository
    public class UserDao implements IUserDao {
    	
    	@Resource
    	private SessionFactory sessionFactory;
    	public SessionFactory getSessionFactory() {
    		return sessionFactory;
    	}
    	public void setSessionFactory(SessionFactory sessionFactory) {
    		this.sessionFactory = sessionFactory;
    	}
    	public void save(User user) {
    		Session session = sessionFactory.getCurrentSession();
    		session.save(user);
    	}
    
    }
    

     service下新建接口IUserService.java

    package com.web.service;
    import com.web.model.User;
    public interface IUserService {
    	public void save(User user);
    }
    

      service下新建接口实现类UserService.java

    package com.web.service;
    
    import javax.annotation.Resource;
    
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.web.dao.UserDao;
    import com.web.model.User;
    
    @Service
    @Transactional
    public class UserService implements IUserService {
    	@Resource
    	private UserDao userDao;
    	
    	public void save(User user) {
    		userDao.save(user);
    		int i=1/0;
    		userDao.save(user);
    	}
    
    }
    

    beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx 
               http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    	<context:annotation-config />
    	<context:component-scan base-package="com.web" />
    	 
    	<bean id="dataSource"	class="org.apache.commons.dbcp.BasicDataSource" 	destroy-method="close">		
    		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    		<property name="url" value="jdbc:mysql://localhost:3306/spring" />
    		<property name="username" value="root" />
    		<property name="password" value="root1234" />
    	</bean>
    
    	<bean id="sessionFactory"	class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="annotatedClasses">
    			<list>
    				<value>com.web.model.User</value>
    			</list>
    		</property>
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    				<prop key="hibernate.hbm2ddl.auto">update</prop>
    				<prop key="hibernate.show_sql">true</prop>
    			</props>
    		</property>
    	</bean>
    
    	<bean id="txManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
    	
    	<tx:annotation-driven transaction-manager="txManager"/>
    	<!-- 	<aop:aspectj-autoproxy proxy-target-class="true"/>  -->
    </beans>
    

    5. 新建source folder:test  ,新建package:com.web.service,用于测试service

      

    package com.web.service;
    
    import static org.junit.Assert.*;
    
    import javax.annotation.Resource;
    
    import org.hibernate.SessionFactory;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.web.model.User;
    
    public class UserServiceTest {
    	@Resource
    	private SessionFactory sessionFactory;
    	
    	private ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
    	
    	
    	@Test
    	public void testSessionFactory() {
    		sessionFactory=(SessionFactory)ac.getBean("sessionFactory");
    		System.out.println(sessionFactory);
    	}
    
    	@Test
    	public void testUserService(){
    		IUserService iuserService=(IUserService)ac.getBean("userService");
    		System.out.println(iuserService);
    		iuserService.save(new User());		
    	}
    }
    
  • 相关阅读:
    npm
    React
    php区分new static 和new self
    tiny java web server
    算法可视化
    在线markdown编辑器
    JAVA
    linux find命令
    自定义windows新建菜单
    floyd算法
  • 原文地址:https://www.cnblogs.com/wujixing/p/5757703.html
Copyright © 2020-2023  润新知