`
zjnbshifox
  • 浏览: 316113 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

JPA引进之路(2)

    博客分类:
  • Java
阅读更多
真的不好意思,讲了这么久,还没有说JPA是什么呢,JPA是Java Persistence API的缩写
是JSR 220: Enterprise JavaBeans,Version 3.0规范的一部分,是J2EE4中Entity Bean的
继承者,是一个java开发的通用持久化规范Java Persistence API 1.0, 其实就是完全重新
定义了的Entity Bean规范。Java Persistence AP(JPA)吸取了Hiberante,JDO,TopLink等优
秀技术和框架,将这几年发展成熟起来的基于POJO模型的O/R Mapping技术标准化,成为在
J2EE和J2SE环境中通用的java持久化API。值得注意的是Java Persistence API并不是J2EE环境
专用,而是在java中的通用API。意味着我们可以在任何需要访问关系数据库的地方使用JPA,
甚至包括面应用。JPA也不要求一定在J2EE容器中才能运行,而是任何有JVM的环境都可以运用。
这就使得我们可以很容易的把JPA作为一个持久化组件自由的和各种容器/框架(EJB3容器, Spring等等)组合。
   JPA最主要的是一个统一的persistence.xml配置文件,可以放到每一个jar的META-INF/目录下面,配置内容主要有
(以hibernate为例)
1、数据库连接的配置文件
2、数据库方言、连接URL、用户名、密码
3、ORM映射的列表(Class)
4、配置其它的Hibernate属性(其他的Provider属性)
5、cache
主要内容,详细内容请看hibernate的reference
xml 代码
 
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <persistence>  
  3.    <persistence-unit name="TestEntityManager" transaction-type="RESOURCE_LOCAL">  
  4.       <provider>org.hibernate.ejb.HibernatePersistence<!---->provider>     
  5.       <class>com.jl.sub1.mapping.Product<!---->class>  
  6.       <class>com.jl.sub1.mapping.ProductItem<!---->class>  
  7.       <!---->  
  8.       <properties>  
  9.           <property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect" />  
  10.           <property name="hibernate.connection.driver_class" value="com.ibm.db2.jcc.DB2Driver" />  
  11.           <property name="hibernate.connection.password" value="db2admin" />  
  12.           <property name="hibernate.connection.url" value="jdbc:db2://10.1.1.10:50000/dbjl" />  
  13.           <property name="hibernate.connection.username" value="db2admin" />  
  14.           <property name="hibernate.ejb.autodetection" value="class" />  
  15.     <!---->properties>               
  16.    <!---->persistence-unit>  
  17. <!---->persistence>  
  18.  <!---->  
  19. <!---->  
  20. <!---->  
  21. <!---->  
  22. <property name="kodo.ConnectionDriverName" value="..."/>  
  23. <property name="kodo.ConnectionURL" value="..."/>  
  24. <property name="kodo.ConnectionUserName" value="..."/>  
  25. <property name="kodo.ConnectionPassword" value="..."/>  
  26.  <property name="kodo.Log" value="DefaultLevel=INFO, Runtime=DEBUG, Tool=INFO"/>  
  27.              

spring配置
xml 代码
 
  1. <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">  
  2.     <property name="entityManagerName"         value="TestEntityManager" />     
  3.     <property name="jpaProperties">  
  4.         <props></props>  
  5.     </property>  
  6.       
  7. </bean>  
  8.  <!-- 此处的名字要和persistence.xml中定义的name一致-->  
  9. <!-- jpaProperties此属性必须要加,hibernate3.1.2的一个bug,否则会抛NullPointerException,springframework论坛告诉我的:)-->  
  10.   
  11. <bean class=  
  12.     "org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>  
  13.     <!--貌似这个部分所有spring配置文件还是仅允许一个,可以配置到公共的xml中-->  
  14.       
  15. <!--引用上面建立的entityManagerFactory-->  
  16. <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">  
  17.     <property name="entityManagerFactory“ ref="entityManagerFactory" />  
  18.           
  19. </bean>  
  20.   
  21. <bean id="transactionInterceptor"  
  22.     class="org.springframework.transaction.interceptor.TransactionInterceptor">  
  23.     <property name="transactionManager" ref="transactionManager" />  
  24.     <property name="transactionAttributeSource">  
  25.     <bean class=  
  26.     "org.springframework.transaction.annotation.AnnotationTransactionAttributeSource" />  
  27.     </property>  
  28. </bean>  
  29.   
  30. <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">  
  31.     <property name="transactionInterceptor" ref="transactionInterceptor" />  
  32. </bean>  
  33.   
  34. <!--自定义DAO-->  
  35. <bean id="numberDao" class="dao.JpaNumberDAO">  
  36.     <property name="entityManagerFactory“ ref="entityManagerFactory" />  
  37. </bean>  
  38. <!--DAO需继承自org.springframework.orm.jpa.support.JpaDaoSupport-->  
  39. <!--DAO中可以通过getJpaTemplate()的各种方法进行持久化操作-->  

这样就好了,可以使用entitymanager,每个jar里面可以相互不用影响,而且这个也符合我们新过程改进推进的每个子系统用jar发布的原则,当然这里的还有作service层,对于子系统之间的交互,我觉得,原则上应该仅允许他们在service的层面上进行,在DAO之间不应该有相互的交叉,不过隐约觉
得还有很多东西要做,嗯,很晚了,肚子饿,明天再想,呵呵
哦,对了,Spring真是好东西,封装了这么多东西给我们用,真是期待更好的版本出来啊,
还有,在j2se环境里,也可以通过代码的方式取得JPA的api
java 代码
 
  1. EntityManagerFactory emf =  
  2. Peristence.createEntityManagerFactory(“TestEntityManager”) ;  
  3. //此处的名字要和persistence.xml中  
  4.   
  5. //定义的name一致  
  6.   
  7.   
  8.  EntityManager em = emf.createEntityManager();  
  9. ...//使用  
  10.  em.close();  
  11.  ...  
  12.  emf.close();  
  13. EntityManagerFactory emf =  
  14. Peristence.createEntityManagerFactory(“TestEntityManager”) ;  
  15.  EntityManager em = emf.createEntityManager();  
  16. ...//使用  
  17.  em.close();  
  18.  ...  
  19.  emf.close();  
分享到:
评论

相关推荐

    jpa例子jpajpa

    2. **实体管理工厂(EntityManagerFactory)**: 这是创建和配置JPA的入口点,通过它我们可以获取到`EntityManager`实例。一般在应用启动时创建,然后在整个应用生命周期内复用。 3. **实体管理器(EntityManager)*...

    Pro JPA2 精通JPA2

    《Pro JPA2:精通Java™ Persistence API》是一本由Mike Keith和Merrick Schincariol撰写的关于Java持久化API(JPA)的权威指南。本书深入探讨了JPA2,即Java Persistence API的第二版,是Java EE 6标准的一部分。...

    学习hibernate必读,JPA2新特征和JPA2映射的神秘之旅。

    "JavaOne2009-JPA2映射的神秘之旅.pdf" 和 "JavaOne2009-JPA2新特征.pdf" 这两个文档,显然涵盖了JPA2的重要概念和新特性,特别是关于映射和框架的最新发展。以下是这两个主题的主要知识点: 1. **JPA2新特性**: ...

    JPA大全之经典全集

    **JPA(Java Persistence API)**是...总之,"JPA大全之经典全集"这个资源集合对于学习和掌握JPA有着重要的价值,无论是初学者还是经验丰富的开发者,都能从中受益,深入理解JPA的各个方面,提升自己的数据库编程能力。

    Pro JPA 2版

    JPA2是Java Persistence API的第二个版本,是众多Java企业级开发者首选的对象关系映射(Object-Relational Mapping,简称ORM)解决方案。本书《Pro JPA 2版》是一部深入介绍JPA2的权威书籍,作者通过全面的内容和...

    JPA源文件/jpa学习

    2. **实体管理器(EntityManager)**:作为持久化的主要入口点,负责实体的创建、加载、更新和删除,以及执行查询操作。 3. **实体管理工厂(EntityManagerFactory)**:创建EntityManager实例,配置JPA的持久化单元...

    struts2 jpa project

    在这个"struts2 jpa project"中,我们看到这两个技术的结合,创建了一个演示性的实例。这个项目旨在展示如何在Struts2框架下利用JPA进行数据持久化操作。 首先,Struts2的配置文件(如struts.xml)是关键,它定义了...

    Struts2整合Spring、JPA

    Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...

    JPA教程,包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    Hibernate是最早的ORM框架之一,后来成为了JPA的一个实现。Hibernate JPA提供了JPA规范的全部功能,并且在JPA的基础上扩展了一些特性,如更强大的 Criteria 查询、HQL(Hibernate Query Language)等。Hibernate JPA...

    spring 整合 hibernate jpa2 实例

    总的来说,这个"spring 整合 hibernate jpa2 实例"展示了如何利用Spring的便利性和JPA2的强大功能来简化数据库操作。通过合理的配置和接口设计,我们可以构建出高效、易于维护的Java应用。同时,使用Maven作为构建...

    springboot2+jpa+mysql

    【SpringBoot2】 SpringBoot是由Pivotal团队提供的全新...总的来说,SpringBoot2+jpa+mysql的组合为开发者提供了一个高效、便捷的后端开发环境,简化了项目的搭建和数据库操作,让开发者能够更专注于业务逻辑的实现。

    JPA中文解释,JPA的API

    2. JPA的主要组件和接口的详细说明。 3. JPA注解的全面介绍,包括如何使用它们来定义实体类、字段属性以及关系映射。 4. Oracle数据库与JPA的集成,包括驱动配置、数据源设置等。 5. 使用JPA进行CRUD(创建、读取、...

    Open JPA2 employee 简单例子

    OpenJPA2是一个开源的对象关系映射(ORM)框架,它是Java Persistence API(JPA)规范的实现。在这个“Open JPA2 employee简单例子”中,我们将深入理解如何使用OpenJPA2来处理数据库中的员工数据。这个示例将帮助...

    Pro JPA2 书籍 代码

    《Pro JPA2》是一本深入探讨Java Persistence API(JPA)2.0版本的专业书籍,旨在帮助开发者全面理解和熟练运用这一强大的ORM(对象关系映射)框架。JPA是Java平台上的标准,用于管理数据库中的对象关系,它极大地...

    JPA 标注 JPA标签手册

    2. **属性映射(Attribute Mapping)**: - `@Basic`:用于基本类型的字段,表明其为简单的属性。 - `@Column`:定义属性映射到数据库表的列,包括列名、长度、是否允许为空等。 - `@Temporal`:用于日期和时间...

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    1. **Repository Abstraction**:这是 Spring Data JPA 的核心特性之一。它提供了一种声明式的数据访问接口,允许开发者定义自定义的查询方法,而不需要手动编写 SQL 或者 HQL(Hibernate Query Language)。例如,...

    spring注解+spring data jpa文档+JPA文档.rar

    在IT领域,Spring框架是Java开发中的核心工具之一,它为构建企业级应用程序提供了全面的解决方案。Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过...

    Gemini JPA 介绍资料

    2. 在Eclipse RCP中使用JPA时,通常需要处理应用的生命周期和依赖性管理。OSGi环境中的每个模块被称为一个“Bundle”,每个Bundle都可以有自己的类加载器,这样可以避免类之间的冲突,实现更细粒度的控制。然而,...

    Spring Data JPA 简化 JPA 开发

    2. CrudRepository:继承自 Repository,提供了基本的 CRUD 功能,如 save、delete、findById 等。 3. PagingAndSortingRepository:扩展自 CrudRepository,增加了分页和排序的能力。 4. JpaRepository:是 ...

Global site tag (gtag.js) - Google Analytics