`

Spring-JPA集成使用心得(转)

阅读更多

1)EntityManagerFactory的persistenceXmlLocation属性可以不指定,会自动搜索 classpath:META-INF/persistence.xml.下面的该项配置相当于没有.


2)jpa必须启用事物,否则无法更新数据 到数据库.


3)若DAO中注入的是EntityManagerFactory,则只能自己写事物代码.spring无法接管.


4)若注入 的是EntityManager则可以让spring接管事物管理.


5)使用注解@PersistenceContext自动注入 EntityManager,则必须在pring配置文件中声明<context:annotation-config/>,context 命名空间以及schemaLocation.
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd


6) 在persistence.xml中若配置了<property name="hibernate.hbm2ddl.auto" value="create" />,那么每次访问数据库都会创建新的表。导致始终只插入最后一条数据。可能值有
none 无
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构

7)如果要使用hibernate自身的功能(JPA没有),则在spring配置文件中配置 entityManagerFactory时,必须配置其LocalContainerEntityManagerFactoryBean的 jpaVendorAdapter属性。


8)数据源即可以在spring配置文件中配置,也可以在persistence.xml中配置.若配置 在spring中,必须在jpaVendorAdapter中配置 database属性,其值为ORACLE,MYSQL等spring中定义枚举值
spring 配置文件:
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:annotation-config />
<context:component-scan base-package="com.hj.jms"/>


<!-- JPA EntityManagerFactoryBean for EntityManager-->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="jms" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
</property>
</bean>

<!-- Transaction manager for JPA -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"><ref bean="entityManagerFactory"/></property>
</bean>

<aop:config>
<aop:pointcut id="productServiceMethods" expression="execution(* com.hj.jms.*.*DAOImpl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods"/>
</aop:config>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" propagation="REQUIRES_NEW"/>
</tx:attributes>
</tx:advice>

</beans>


jpa配置文件 (persistence.xml):
<?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="jms" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>

<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="none" />
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1/jms"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="101"/>
<property name="hibernate.c3p0.min_size" value="5"/>
<property name="hibernate.c3p0.max_size" value="20"/>
<property name="hibernate.c3p0.timeout" value="300"/>
<property name="hibernate.c3p0.max_statements" value="50"/>
<property name="hibernate.c3p0.idle_test_period" value="3000"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
</properties>
</persistence-unit>
</persistence>

分享到:
评论

相关推荐

    spring使用心得 java ssh

    SSH(Spring、Struts、Hibernate)是Java Web开发的经典组合,这个压缩包中包含了一些关于Spring在实际使用过程中的心得和常见问题的解决方案。 首先,"spring的事务代理.txt"可能涉及到Spring的事务管理。Spring...

    JAVA中spring介绍以及个人使用心得

    ### JAVA中Spring框架介绍及个人使用心得 #### 一、Spring框架概述 Spring是一个轻量级的开源Java框架,它的设计目标是简化企业级应用程序的开发。与其他重量级的Java框架相比,Spring更加注重轻量化、非侵入性和...

    codeup-spring-blog

    通过分析项目的名称和描述,我们可以推测它可能包含了Spring Boot、Spring MVC、Spring Data JPA等Spring家族的技术,以及可能使用了Thymeleaf或JSP作为视图层模板引擎。 首先,Spring框架是Java企业级应用开发的...

    jpa相关资源收集

    **JPA(Java Persistence API)相关资源收集**...此外,还可能涵盖一些高级主题,如性能优化、最佳实践以及JPA与其他技术(如Spring Data JPA)的集成。总之,这份资源对于想深入了解JPA的开发者来说是一份宝贵的资料。

    Spring Boot开发实战:基于Spring Boot的RESTful API服务的实验心得与案例解析

    - **创建Repository接口**:使用Spring Data JPA提供的接口来处理数据库操作。 - **创建Service层**:实现业务逻辑处理。 - **创建Controller层**:处理HTTP请求并与Service层交互。 ###### 3.2.4 配置文件 - **...

    JAVA中spring介绍&心得&项目&相关练习

    这些组件不仅功能强大,而且易于集成和使用,使得开发者能够快速地构建出高质量的应用程序。 此外,Spring框架还具有良好的扩展性和可定制性。开发者可以根据项目的实际需求,选择需要的模块和组件,或者通过实现...

    Spring框架在Java开发中的应用与心得

    例如,支持多种数据库访问技术(JDBC、MyBatis、Hibernate等),以及与多种第三方框架的集成(如Spring Security、Spring Data JPA等)。 #### 二、Spring框架在Java开发中的应用 **1. Web应用开发** - **集成...

    spring2.0学习笔记+spring定时任务

    标题 "spring2.0学习笔记+spring定时任务" 暗示了我们即将探讨的是关于Spring框架2.0版本的学习心得以及如何在Spring中配置和使用定时任务。在这个主题下,我们将深入理解Spring的核心概念,特别是它在企业级Java...

    Spring框架基础总结

    5. **Spring ORM**:提供了对ORM(对象关系映射)工具的支持,如Hibernate、JPA等,使得数据持久化操作变得更加简单。 6. **Spring Web**:为基于Web的应用程序提供了上下文支持,简化了处理多部分请求以及将请求...

    j2ee入门心得,EJB,Java WEB 开发

    ### j2ee入门心得,EJB,Java WEB 开发 #### 关键知识点概述: - **Java Web开发基础**:包括对JSP、Servlet等基础知识的理解。 - **MVC框架的应用**:如Struts 1与Struts 2的区别及应用场景。 - **Spring框架**:...

    myeclipse_使用心得

    - **Java EE 5 和 Spring 支持**:增强了对 EJB3.0 和 Java 持久化(JPA)的支持,优化了 Spring 2.0 的配置管理,集成 Hibernate,提升企业级应用的开发体验。 - **AJAX 开发和测试**:支持 AJAX 技术,提供了 ...

    Spring学习心得(二)——日志和数据库

    在本文中,我们将深入探讨这两个关键领域,并基于给出的"Spring学习心得(二)——日志和数据库"这个标题进行详细的阐述。 首先,让我们从日志开始。在Java应用程序中,日志系统扮演着调试、监控和问题排查的关键角色...

    springboot489基于springboot的七彩云南文化旅游网站的设计与实现pf.zip

    5. **数据库集成**:SpringBoot支持多种数据库,项目中可能采用了MySQL作为主要数据存储,通过SpringDataJPA进行数据操作,简化了DAO层的编写。 6. **模板引擎**:SpringBoot可以与Thymeleaf、FreeMarker等模板引擎...

    基于Spring Boot的CMS内容管理系统项目的实习心得.zip

    在内容管理部分,我们使用了Spring Data JPA和Hibernate来处理数据库操作,它们提供了强大的ORM(对象关系映射)功能,将数据库操作转化为面向对象的API,使得代码更加简洁和易于理解。同时,我们利用Spring MVC处理...

    spring学习笔记0.0.0

    4. **数据访问**:包括JDBC模板、ORM集成(如Hibernate、MyBatis),以及Spring Data JPA,用于简化数据库操作。 5. **MVC(模型-视图-控制器)**:Spring MVC是Spring提供的Web应用程序模型,用于构建RESTful服务...

    JAVA中spring介绍.docx

    - **支持单元测试和集成测试**:Spring框架的设计理念鼓励使用接口和依赖注入,这有助于编写单元测试和集成测试,提高代码质量和可测试性。 #### 三、Spring框架的心得体会 1. **松耦合的重要性** - 使用Spring...

    基于springboot的美食分享管理平台(部署文档+表结构文档) Javaee项目,springboot项目

    - SpringData JPA提供了对ORM框架(如Hibernate)的高级抽象,简化了数据库操作。 - 数据库连接池,如HikariCP或Druid,提高数据库连接的复用性。 - 使用MyBatis或JPA进行SQL操作,通过Repository接口封装数据...

    spring data 2012

    作者们在书中还分享了关于如何在真实的企业环境中实施Spring Data的心得和最佳实践,帮助开发者理解在复杂的项目中如何利用Spring Data的优势来提高开发效率和系统的可维护性。 总结来看,《Spring Data 2012》提供...

    JAVA工作流的学习心得(转)

    jBPM使用JPA(Java Persistence API)来存储流程实例、任务、变量等信息,因此熟悉JPA和SQL也是必要的。同时,jBPM提供了基于Hibernate的持久化服务,了解其工作机制可以帮助优化性能。 在实践中,jBPM还可以与其他...

    JBPM的使用心得

    **JBPM的使用心得** JBPM(JBoss Business Process Management)是Red Hat公司推出的一款开源的工作流管理系统,它提供了一套完整的业务流程管理解决方案,包括流程设计、执行、监控和优化。JBPM允许开发者和业务...

Global site tag (gtag.js) - Google Analytics