JPA的主要特点如下:
- ORM(Object-Relational Mapping):对象-关系映射,实现面向对象模型和关系模型数据之间的转换。
@Entity
public class User {
@Id
private int id;
private String name;
}
- JPQL(Java Persistence Query Language):面向对象的查询语言,操作实体对象。
String jpql = "SELECT u FROM User u WHERE u.name = :name";
Query query = em.createQuery(jpql);
query.setParameter("name", "John");
List<User> users = query.getResultList();
- 线程安全的EntityManager用于实体对象的操作(增删改查)。
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
User user = new User();
user.setName("John");
em.persist(user);
tx.commit();
em.close();
- 支持多种关系映射(一对一、一对多、多对多)和继承映射(JOINED、SINGLE_TABLE、TABLE_PER_CLASS)。
@OneToMany(mappedBy = "user")
private List<Order> orders;
- 双向关系映射及级联操作支持。
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
- 提供强大的查询功能(分页、排序、过滤、子查询、join等)。
- 支持一级缓存和二级缓存优化数据查询效率。
- 标准化的API,支持多种数据库(Hibernate、EclipseLink等)。