您的位置:首页 > 编程语言 > Java开发

Dao层系列-6-Hibernate JPA Spring

2013-07-25 17:14 197 查看
这边主要是利用Spring对JPA的相关接口,重构上一篇的代码
完整代码请参考:https://git.oschina.net/yaolifei/test/tree/master/test-hibernate-jpa-spring

applicationContext.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:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

<context:component-scan base-package="com.yaolifei.test" />

<context:property-placeholder location="jdbc.properties" />

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value= "${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="${jdbc.maxActive}" />
<property name="validationQuery" value="${jdbc.validationQuery}" />
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.yaolifei.test" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

</beans>
UserDaoImpl.java

package com.yaolifei.test.user.dao;

import java.util.List;

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

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.yaolifei.test.user.domain.User;

@Repository("userDao")
@Transactional
public class UserDaoImpl implements UserDao {

@PersistenceContext
private EntityManager entityManager;

@Override
public User getById(Integer id) {
User user = entityManager.find(User.class, id);
return user;
}

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

@Override
public void save(User user) {
entityManager.persist(user);
}

@Override
public void update(User user) {
entityManager.merge(user);
}

@Override
public void remove(User user) {
entityManager.remove(user);
}

}
是不是简洁了许多,所有的事务都通过Spring来管理,不用每次操作都手动的打开关闭了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: