EntityManager 是 JPA 规范中的核心接口,负责实体生命周期管理。在 Spring 环境下,它提供了对实体的持久化、查询及刷新等基础能力。
1. 获取 EntityManager 实例
通常通过依赖注入的方式获取,这样容器会帮我们管理其生命周期。
@PersistenceContext
private EntityManager entityManager;
2. 核心持久化操作
保存实体
创建新对象后调用 persist 方法,注意事务必须开启。
entityManager.getTransaction().begin();
Product product = new Product();
product.setName("手机");
product.setPrice(1000.0);
entityManager.persist(product);
entityManager.getTransaction().commit();
更新实体
先通过 find 加载实体,修改属性后使用 merge 合并回持久化上下文。
entityManager.getTransaction().begin();
Product product = entityManager.find(Product.class, 1L);
product.setPrice(1200.0);
entityManager.merge(product);
entityManager.getTransaction().commit();
删除实体
同样需要先加载实体,再调用 remove 标记删除。
entityManager.getTransaction().begin();
Product product = entityManager.find(Product.class, 1L);
entityManager.remove(product);
entityManager.getTransaction().commit();
查询实体
支持直接根据 ID 查找,也支持 JPQL 进行复杂查询。
// 按 ID 查询
Product product = entityManager.find(Product.class, 1L);
System.out.println("产品名称:" + product.getName() + ", 价格:" + product.getPrice());
// JPQL 查询
entityManager.createQuery();
query.setParameter(, );
List<Product> products = query.getResultList();

