首先,JPA不是ORM框架,而是SUN官方提出的JAVA持久化规范。JPA整合了现有的Hibernate、TopLink等ORM框架,具有易于使用、伸缩性强等优点。
JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它不同于EJB 3.0,JPA可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。
JPA的总体思想和现有Hibernate、TopLink,JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:
1、ORM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;
2、JPA 的API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
3、查询语言,这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
具有ORM元数据的领域对象称为实体(Entity),按JPA的规范,实体具备以下的条件:
1、必须使用javax.persistence.Entity注解或者在XML映射文件中有对应的元素;
2、必须具有一个不带参的构造函数,类不能声明为final,方法和需要持久化的属性也不能声明为final;
3、如果游离状的实体对象需要以值的方式进行传递,如通Session bean的远程业务接口传递,则必须实现Serializable接口;
4、需要持久化的属性,其访问修饰符不能是public,它们必须通过实体类方法进行访问。
总而言之,JPA已经作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。开发者将无需在现有多种ORM框架中艰难地选择,在不久的将来,JPA将成为真正的标准。