JPA是Java EE的一部分。
Java EE全称为Java Enterprise Edition,是Oracle(原Sun)推出的企业级Java开发平台。它提供了一整套完备的企业应用开发解决方案,涵盖从客户端到服务器端的各个层面。
JPA作为Java EE的 ORM 标准,属于Java EE的一部分,主要有以下原因:
- JPA是由Sun制定的Java EE ORM技术标准,该标准定义了一套ORM API和SPI,以实现Java对象和关系数据库的映射。
- JPA依赖于Java EE的其他技术,如JTA进行事务管理,JDBC进行数据库连接等。这些技术框架组合在一起,可以提供完整的企业级ORM解决方案。
- JPA的实现由Java EE服务器厂商提供,如Hibernate,EclipseLink等。在Java EE服务器中集成这些实现,可以直接开箱即用。
- 应用 can 在 Java EE 应用服务器中使用JPA,应用服务器可以为应用提供JPA实现、连接池、事务管理器等一体化的ORM框架环境。
- JPA的标准在Java EE的不同版本中得以不断完善,以支持Java EE平台的新特性。
一个简单的例子:
在Java EE(如JBoss)应用服务器中使用JPA:
实体类:
@Entity
@Table(name = "user")
public class User {
...
}
在JBoss中的persistence.xml文件配置JPA:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="examplePersistenceUnit">
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
</properties>
</persistence-unit>
</persistence>
在应用中注入EntityManager使用JPA:
@Stateless
public class UserDAO {
@PersistenceContext(unitName = "examplePersistenceUnit")
private EntityManager em;
public void save(User user) {
em.persist(user);
}
}
可以看出,JPA和Java EE有着密切的关系,在Java EE环境下使用JPA可以发挥出其最大的威力,这也是JPA作为一项Java企业级标准的重要体现。