JPA:分离附加的只读实体列表
JPA: Detach a list of attached read-only entities
查询后分离大型列表的实体是否有益,即为这些实体使用默认模式,如:
// Find all
for List<Device> devices = em.createNamedQuery("find.*.devices", Device.class).getResultList();
// Detach all
for (Device d : devices) {
em.detach(d);
}
我们可以避免一些负面影响,例如错误地为被视为 "read only" 的实体更新数据库(可以保证)或节省内存。
如果您想在数据库中没有任何更新的情况下使用列表,您可以分离对象。
您有以下选择:
如果您正在使用程序化交易,请不要打开交易。请注意交易未开启:
EntityManager em = EntityManagerFactory.createEntityManager();
列表 personList = em.query()
将您的方法标记为不支持事务@TransactionAttribute(NOT_SUPPORTED)
- 如果您清除 EntityManager,您将分离所有实体:em.clear()
查询后分离大型列表的实体是否有益,即为这些实体使用默认模式,如:
// Find all
for List<Device> devices = em.createNamedQuery("find.*.devices", Device.class).getResultList();
// Detach all
for (Device d : devices) {
em.detach(d);
}
我们可以避免一些负面影响,例如错误地为被视为 "read only" 的实体更新数据库(可以保证)或节省内存。
如果您想在数据库中没有任何更新的情况下使用列表,您可以分离对象。
您有以下选择:
如果您正在使用程序化交易,请不要打开交易。请注意交易未开启:
EntityManager em = EntityManagerFactory.createEntityManager();
列表 personList = em.query()
将您的方法标记为不支持事务@TransactionAttribute(NOT_SUPPORTED)
- 如果您清除 EntityManager,您将分离所有实体:em.clear()