|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。ApacheOpenJPA框架供应一些JPA扩大特征,好比FetchGroups等,为企业Java开辟者猎取与Java对象所对应的数据的事情供应了更年夜的天真性。PratikPatel论述了怎样分离JPA计划手艺,利用JPAAPI和Spring2.5框架来开辟Java使用。在比来的NoFluffJustStuff(NFJS)俄亥俄州中央软件座谈会上,他就企业JP这一话题做了一次演讲。
Pratik谈到了怎样为利用JPAAPI完成耐久化的Java使用计划多个耐久化单位(persistenceunits,即PU),也谈到相干的功能调优手艺。他提到EJB3.0Entities(正式的叫法是EntityBeans)接纳了基于“POJO耐久化”计划观点的JPA。他说,在Java使用中利用供给商供应的特定扩大(好比“FetchGroups”)来举行JPA开辟是很有需要的。
Spring2.5框架与JPA的集成优秀,能够办理多个耐久化单位,也能够经由过程一些JPA设置细节(如数据源)把persistence.xml迁徙到Spring设置文件中,JPA的设置也就加倍天真。在利用Spring设置JPA把年夜段代码支解为小模块的时分,开辟职员就能够使用扩大点。一样,SpringTest模块对JPA类(如AbstractJpaTests)的单位测试、集成测试都供应很好的撑持。AbstractJpaTests类利用了一个背景classloader在运转时加强类,它环绕事件来包装测试办法,同时供应匡助类来声明使用高低文。SpringJPA模块(LocalContainerEntityManagerFactoryBean)还能够在容器外对JPA逻辑举行单位测试。
谈到锁(locking),Pratik说到JPA标准默许利用悲观锁(optimisticlocking)。固然,开辟者也能够自利用用失望锁(pessimisticlocking),但他们必要利用EntityManager的lock()大概find()办法来界说锁办理器。JPA以基于“版本”的体例来跟踪内存中数据的更新,只必要在耐久化类上加一个@Version属性,同时在数据库表中增加一个Version列。应该只管制止利用失望锁,由于它会影响吞吐量,并且很难从坏锁(badlocks)中恢复。Pratik以ApacheOpenJPA框架供应的@FetchGroup和@FetchPlan注解来举例申明JPAAPI的用法和功能调优。别的,他还谈到fetching逻辑的单位测试和集成测试,而且倡议人人对fetchgroups代码举行测试,这对使用投进到临盆情况中的历程很有保证。
关于JPA的最好理论,他但愿开辟者能思索利用内存数据库(如HSQLDB)而不要再用mockDAO完成。固然毗连到内存数据库会多花点工夫,但代码绝对要少良多,开辟价值也小。别的的最好理论还包含反省天生的SQL,这会使我们更深切懂得ORM工具天生的SQL查询语句。另外一件要思索的是DDL的天生,由于一切的JPA完成都同意天生DDL,这能够用来举行疾速开辟。在利用JPAAPI完成耐久化时还必要思索的其他一些事变以下:
- 汇合排序(JPA2.0将引进一个叫做@OrderColumn的新注解,界说用来对照的列)
- 尽早且频仍地革新缓存(Flush),统一事件中接下往的查询就不会再看到未革新的数据
- 列举——数据库中速率与可读性的比力
在另外一个与JPA相干的演讲中,Pratik谈到了JPA查询言语(JPAQueryLanguage,即JPAQL),这类言语生成具有面向对象查询的特征,并且能够批量更新和删除。JPAQL与其他查询言语如JDOQL和HQL等很类似,但功效要比HQL少。关于lazy联系关系,FETCHJOIN表达式能够在获得主表数据的同时将联系关系的信息也一并取回。他还谈到了JPA2.0标准的一些新特征:
- “Criteria”查询
- 针对基础范例的汇合(Integer和String)
- 扩大的Map撑持
- 更多JPAQL表达式
- 更好的锁撑持
检察英文原文:PratikPatelonEnterpriseJPA,FetchGroupsandSpring2.5
来自:http://www.infoq.com/cn/news/2008/08/nfjs2008-jpa-spring-2.5
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 |
|