我想问一问不关闭环境是否安全?
final PersistentEntityStore entityStore = manager.getPersistentEntityStore(xodusRoot, instance);
final List<User> users = new LinkedList<>();
try {
} finally {
//entityStore.close
}
不关闭环境的原因是,此示例代码在Servlet环境中使用,在该环境中我们实现了一种Sigleton查找表(地图)来保存Environments和EntiyStores,如果我们在下一个HTTP POST中将其关闭,请求将收到“环境已关闭”错误,因此我们不会将其关闭。
我们在此处实现Lookup表(映射)的原因是为了防止servlet请求出现数据库锁定问题,尤其是在多个并发请求上。
这样做安全吗?还是这甚至是正确的方法?
答案 0 :(得分:2)
通常,不关闭Environment或EntityStore是安全的。在大多数情况下,如果JVM退出,未关闭的数据库将在没有数据丢失的情况下打开。在最坏的情况下,数据库将恢复为最新的有效快照,就像在系统/硬件故障之后一样。但是,未关闭的数据库可能会占用一些额外的物理空间(GC会受到影响),从而导致性能下降。您可以在销毁Servlet时关闭查找表中的所有Environments / EntityStores。