`
zjnbshifox
  • 浏览: 318809 次
  • 性别: 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();  
分享到:
评论

相关推荐

    spring3.0MVC中文教程.doc

    2. 引进一种新的表达语言,可以使用同时定义基于 XML 和注释的 bean 定义。 3. 支持 REST Web 服务,数据格式可以从来没有那么容易。 4. 支持 JPA 2.0,提供了强大的持久化机制。 5. DispatcherServlet 是 Spring ...

    store_managesys:仓库管理系统,SpringBoot + Spring Data JPA +...。

    为了方便,在仓库sql目录下提供了初始化的脚本,可自行使用从git引进项目在IDE配置java运行环境运行WarehouseApplication.java访问: : :8880/具体部署过程参考问题: : 用户手册管理员客服人员仓库人员2018/06/20...

    blog:一个基于SpringBoot简约优雅的个人博客

    数据持久层采用SpringBootJPA,数据库为MySQL8.0 四。运行教程 1.引进项目 Fork本项目,用IDEA新建项目,点击 Create Project For Version Control,复制项目github地址 粘贴到IDEA中的Git地址 选择 点击clone 等待...

    JSP基于SSM公司人力资源管理系统可升级SpringBoot毕业源码案例设计.zip

    2. 招聘管理:支持发布招聘信息、接收应聘者简历、安排面试等功能,帮助HR进行人才引进。 3. 考勤与休假管理:记录员工的出勤情况,处理请假申请,确保公司的正常运营。 4. 绩效考核:设置绩效考核标准,自动或手动...

    Java人事管理系统源码.zip

    2. **招聘管理**:用于发布职位、接收简历、安排面试、跟踪招聘进度等,帮助HR进行人才引进。 3. **考勤管理**:记录员工的出勤情况,包括上下班时间、请假、出差等,可以自动化计算工时。 4. **薪酬福利**:处理...

    j2ee架构详细概述

    该书由中国电子工业出版社引进并翻译为《J2EE设计开发编程指南》。 - **起源与背景**:Spring框架技术的产生源于Rod Johnson在上述书籍中阐述的设计思想。为了帮助开发者更好地理解和实现这些设计理念,Rod Johnson...

Global site tag (gtag.js) - Google Analytics