读书人

JPA 课程(一)

发布时间: 2012-09-22 21:54:54 作者: rapoo

JPA 教程(一)

1.JPA概述
JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。

Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。

从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化整合者的目标应该不难实现。
JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

?

Sun引入新的JPA ORM规范出于两个原因:

??? 其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;

??? 其二,Sun希望整合对ORM技术,实现天下归一。

?

JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。

但它不囿于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。

JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。

目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的实现。

?

JPA的总体思想和现有Hibernate、TopLink,JDO等ORM框架大体一致。

总的来说,JPA包括以下3方面的技术:
1、ORM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;
2、JPA 的API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
3、查询语言,这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

?

?

2、实体对象

访问数据库前,我们总是要设计在应用层承载数据的领域对象—omain Object),ORM框架将它们持久化到数据库表中。

为了方便后面的讲解,我们用论坛应用为例,建立领域对象:

Topic -----(extends)----> PollTopic? 1--------------*> PollOption

Topic是论坛的主题,而PollTopic是调查性质的论坛主题,扩展于Topic,一个调查主题拥有多个选项PollOption。

这三个领域对象很好地展现了领域对象之间继承和关联这两大核心的关系。这3个领域对象将被映射到数据库的两张表中:

@Lob ①-1 @Basic(fetch = FetchType.EAGER) ①-2@Column(name = "POST_TEXT", columnDefinition = "LONGTEXT NOT NULL") ①-3 private String postText;

postText属性对应T_POST表的POST_TEXT字段,该字段的类型是LONTTEXT,并且非空。

JPA 通过@Lob将属性标注为Lob类型,如①-1和②-1所示。

通过@Basic指定Lob类型数据的获取策略,FetchType.EAGER表示非延迟加载,而FetchType. LAZY表示延迟加载,如①-2和②-2所示。

通过@Column的columnDefinition属性指定数据表对应的Lob字段类型,如①-3和② -3所示。

读书人网 >软件架构设计

热点推荐