配置JPA
Spring JPA提供了两种方法创建JPA EntityManagerFactory
<beans>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="myPersistenceUnit" />
</bean>
</beans>
FactoryBean
创建的EntityManagerFactory适用于仅通过JPA进行数据访问的环境。由于使用了PersistenceProvider自动侦测机
制,所以只能从默认路径classpath:META-INF/persistence.xml中读取配置信息。
<beans>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="someDataSource" />
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
</property>
</bean>
</beans>
FactoryBean
提供了对JPA
EntityManagerFactory的完整控制,非常适合那种有简单定制需要的环境。你可以处理多个persistence.xml配置文件;覆盖
persistence.xml文件的默认路径;可以传递Spring托管的JDBC DataSource给JPA
PersistenceProvider,用来替代persistence.xml中的JDBC配置(这个Spring托管的DataSource通常被
作为nonJtaDataSource传送给PersistenceProvider,并且覆盖persistence.xml中相同的
nonJtaDataSource)。
数据访问
基于JPA的DAO可以通过三种方式进行数据访问JpaDaoSupport,JpaTemplate和plain
JPA。其中JpaTemplate是plain
JPA的封装,而JpaDaoSupport又是JpaTemplate的封装。无疑,使用不对Spring产生任何依赖的Plain
JPA的API进行编程是最好选择。
public class ProductDaoImpl implements ProductDao {
private EntityManager entityManager = null;
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
public Collection loadProductsByCategory(String category) {
EntityManager em= entityManagerFactory.createEntityManager();
Query query = em.createQuery("from Product as p where p.category = :category");
query.setParameter("category", category);
return query.getResultList();
}
}
注意,必须激活PersistenceAnnotationBeanPostProcessor功能才能让Spring识别@PersistenceContext注解。
<beans>
<!-- JPA annotations bean post processor -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<bean id="myProductDao" class="product.ProductDaoImpl" />
</beans>
异常转化
Spring提供了一个允许通过使用@Repository注解进行透明的异常转化的解决方案。
@Repository
public class ProductDaoImpl implements ProductDao {
...
}
<beans>
<!-- Exception translation bean post processor -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<bean id="myProductDao" class="product.ProductDaoImpl" />
</beans>
后置处理器将自动的寻找所有的异常转化器(PersistenceExceptionTranslator这个接口的实现类)并通知所有打上@Repository注解的bean,从而能够使得被找到的异常转化器能够在抛出异常时做相应的异常转化工作。
总结来说:DAO能够基于普通的Java持久层API和注解来实现,但同样也能享受到由Spring管理事务、IoC和透明的异常转化(转化成为Spring的异常体系)等好处。
分享到:
相关推荐
Struts2、Spring和JPA是Java开发中常用的三大框架,它们在企业级应用开发中发挥着关键作用。Struts2作为MVC框架,负责控制应用程序的流程;Spring框架则是一个全面的后端解决方案,提供了依赖注入(DI)、面向切面...
在Spring Boot应用中,使用`spring-data-jpa`来配置MySQL多数据源是一项常见的需求,尤其是在构建大型分布式系统时,为了实现数据隔离、负载均衡或读写分离等目的。本教程将详细介绍如何在Spring Boot项目中配置多个...
8. ** Transactions**:Spring Data JPA 使用 Spring 的事务管理支持,可以方便地配置事务边界,确保数据操作的一致性。 9. **JPA Querydsl Support**:Spring Data JPA 还支持 Querydsl,这是一个强大的类型安全的...
采用hibernate 4.3.6,spring 4.0.6 ,实现jpa配置,简单易懂明了。压缩文件中包含jpa依赖的hibernate包,如果下载者希望运行,需要自己写实体类。压缩包中含有精简的配置。
Spring Boot结合JPA(Java Persistence API)和JdbcTemplate,为开发者提供了灵活且强大的多数据源配置能力。本示例将详细介绍如何在Spring Boot项目中实现这样的配置,以支持不同类型的数据库。 首先,我们要理解...
文档"spring注解完整版"可能涵盖了Spring框架中所有可用的注解及其用法,对于理解和掌握Spring框架的注解配置非常有帮助。"spring data jpa官方文档中文翻译"则提供了Spring Data JPA的详细指南,包括其设计原理、...
2. **配置JPA**:在Spring的配置文件中,设置JPA的实体扫描路径、数据源、持久化单元名称等信息。 3. **定义Repository接口**:创建一个Repository接口,继承SpringData提供的JpaRepository或CrudRepository接口,...
Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...
至于压缩包中的“helloworld”文件,可能是一个简单的示例项目,通常会包含一个基础的Spring Data JPA配置,一个实体类,以及对应的Repository接口,用于展示Spring Data JPA的基本用法。通过查看这个例子,你可以更...
3. **配置 Spring**:在 Spring 的配置文件中,声明 OpenJPA 的 DataSource 和 EntityManagerFactory,以及事务管理器。 ```xml <bean id="dataSource" class="org.springframework.jdbc.datasource....
2. **配置JPA**:在Spring的配置文件中,需要配置数据源、JPA供应商(例如Hibernate)、实体扫描路径等。这可以通过XML配置或者基于注解的配置完成。 3. **定义实体**:创建表示数据库表的Java类,并使用JPA的注解...
2. **配置OpenJPA**:在Spring的配置文件(如`applicationContext.xml`)中,你需要配置OpenJPA的数据源、实体扫描路径以及JPA的属性: ```xml <!-- 数据库连接配置 --> ...
在Spring中,我们可以使用`persistence.xml`文件来配置数据源、实体扫描以及JPA供应商。以下是一个简单的例子: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
2. 配置文件(如`applicationContext.xml`或使用Java配置类)将设置数据源、JPA配置、DispatcherServlet配置、视图解析器等。 3. 实体类(Entity)将对应数据库表,用于持久化数据。 4. Repository接口将继承自...
在Struts2中整合Spring,主要目的是利用Spring的DI特性管理Struts2中的Action类。首先,需要在Struts2的配置文件(struts.xml)中添加Spring插件的配置,启用Spring插件支持。然后,Action类可以声明为Spring容器的...
Spring Boot JPA与Security是两个在Java开发领域中极为重要的技术框架,它们分别专注于数据访问和应用程序的安全管理。本文将深入探讨这两个框架的核心概念、如何整合使用以及在实际项目中的应用。 Spring Boot是由...
Spring JPA,全称为Spring Data JPA,是Spring框架的一部分...这个“Spring JPA 配置类包集合”可能是为了方便开发者快速集成和配置Spring JPA项目,包含了一些常用的配置文件和实用工具类,有助于快速搭建和调试项目。
在项目中,它可能负责定义如何使用JPA来操作用户角色和权限数据,以及如何配置SpringSecurity的过滤规则。 在实际的实现过程中,开发者首先会创建一个用户实体(User),并关联角色实体(Role)。每个角色都有多个...
通过这个“springData-jpa-demo”,开发者可以逐步学习如何配置Spring Data JPA,创建和使用Repository,以及如何在实际项目中整合Spring Boot和数据库操作。此外,它也可以作为模板,帮助开发者快速搭建自己的...