entitymanage的配置及使用

第一步:
添加pom依赖

		<spring.version>4.3.3.RELEASE</spring.version>
		<dependency>
       		 <groupId>org.springframework</groupId>
        	 <artifactId>spring-orm</artifactId>
        	 <version>${spring.version}</version>
    	</dependency>
    	
    	<!-- 使用entityManage -->
    	<dependency>
      		<groupId>org.hibernate</groupId>
      		<artifactId>hibernate-entitymanager</artifactId>
      		<version>${hibernate.version}</version>
    	</dependency>
    	<!-- 缓存 -->
    	<dependency>  
	  		<groupId>org.hibernate</groupId>  
	 		<artifactId>hibernate-ehcache</artifactId>  
	  		<version>${hibernate.version}</version>  
		</dependency>  

第二步:
改写sessionFactory以及配置事务
在application中sessionFactory的创建更改为:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"  p:dataSource-ref="dataSource">
        <property name="persistenceUnitName" value="testdb"/>      
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
                  p:database="${jpa.database}" 
                  p:showSql="${jpa.showSql}" 
                  p:generateDdl="true"/>
        </property>
    </bean>
    
     <!-- 解决一些延时加载的问题 -->
    <bean name="openEntityManagerInViewInterceptor" 
        class="org.springframework.orm.jpa.support.SharedEntityManagerBean">  
        <property name="entityManagerFactory">  
            <ref bean="entityManagerFactory" />  
        </property>  
    </bean>

以上在配置时value=“testdb””需要配置文件,其配置文件为:persistence.xml,我这里的persistenc配置文件是放在resource下的META-INF文件夹下的,内容为:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="testdb" transaction-type="RESOURCE_LOCAL">
       <provider>org.hibernate.ejb.HibernatePersistence</provider>
        
      	<properties>
            <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>
            <property name="net.sf.ehcache.configurationResourceName" value="/ehcache.xml" />
			<property name="hibernate.cache.use_second_level_cache" value="true" />
			<property name="hibernate.cache.use_structured_entries" value="true" />
			<property name="hibernate.cache.use_query_cache" value="true" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.generate_statistics" value="false" />
			<property name="hibernate.jdbc.fetch_size" value="64" />
			<property name="hibernate.jdbc.batch_size" value="32" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
			<property name="hibernate.format_sql" value="false" />
			<property name="javax.persistence.validation.group.pre-persist" value="javax.validation.groups.Default" />
            <property name="javax.persistence.validation.group.pre-update" value="javax.validation.groups.Default" />
		</properties>
    </persistence-unit>
</persistence>
并且要加入ehcache.xml配置文件为:

<?xml version="1.0" encoding="UTF-8"?> ```

在spring-mvc中配置事务,其中因为事务需要在web容器中的DispatcherServlet下的配置文件中配置,否则配置的事务没有效果

<context:component-scan base-package=“com.mvn” />

 <!-- 事务管理器 -->
 <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"  >
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
    <property name="dataSource" ref="dataSource"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager"  proxy-target-class="true"  mode="proxy"/>

``
第三步:
在持久层的实现类中使用:

在这里插入代码片package com.mvn.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.mvn.dao.UserDao;
import com.mvn.entity.User;

@Service
@Transactional
public class UserDaoImpl implements UserDao{

	@Autowired
	private EntityManager entityManager;
	
	@Override
	public void save(User user) {
		try {
			entityManager.merge(user);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public User find(int id) {
		try {
			User user = entityManager.find(User.class,id);
			return user;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	public void del(int id) {
		try {
			User user = entityManager.find(User.class,id);
			entityManager.remove(user);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

	@Override
	public User update(User user) {
		try {
			User user2 = entityManager.merge(user);
			return user2;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	public List<User> getAll() {
		String sql="select o from User o";
    	Query query =  entityManager.createQuery(sql);
    	@SuppressWarnings("unchecked")
		List<User> list = query.getResultList();
		return list;
	}

}

其中需要在注解@service的类下添加注解事务@@Transactional即可,
配置文件的项目结构为:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值