JPA:分离附加的只读实体列表

时间:2015-01-13 15:07:06

标签: java-ee jpa

查询后分离大型列表的实体是否有益,即对这些实体使用默认模式,如:

// Find all
for List<Device> devices = em.createNamedQuery("find.*.devices", Device.class).getResultList();

// Detach all
for (Device d : devices) {
  em.detach(d);
}

我们可以避免某种负面影响,比如错误地更新数据库,因为这些实体被视为&#34;只读&#34; (可以保证)或节省内存。

1 个答案:

答案 0 :(得分:5)

如果您想使用数据库中没有任何更新的列表,您可以将对象分离。

您有以下选择:

  1. 如果您使用的是程序化交易,请不要打开交易。请注意,事务未打开:

    EntityManager em = EntityManagerFactory.createEntityManager();

    列出personList = em.query()

  2. 将您的方法标记为未支持的交易@TransactionAttribute(NOT_SUPPORTED)

  3. 如果您清除EntityManager,您将分离所有内容:em.clear()