gpt4 book ai didi

java - JDO:PersistenceManager 是单例吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:34:58 25 4
gpt4 key购买 nike

只是基础知识:我正在使用由嵌入式 DB4O 数据库支持的 DataNucleus。

如果我做这个简单的测试:

    PersistenceManager pm1 = persistenceManagerFactory.getPersistenceManager();
PersistenceManager pm2 = persistenceManagerFactory.getPersistenceManager();

pm1.makePersistent(t1);
pm2.makePersistent(t2);

我得到一个文件锁定异常:

com.db4o.ext.DatabaseFileLockedException: C:\<path>\primary_datastore.data

这表明我不知道 PersistenceManager 应该如何工作。我以为我只要在需要 PersistenceManager 来查询或保存数据时调用 PersistenceManagerFactory 就可以得到线程安全的东西。

  • 我需要制作 PersistenceManager 吗我整个人中的单例应用?
  • 如何做多个线程,执行查询和在 JDO/DataNucleus 中更新工作?

最佳答案

我是否需要让 PersistenceManager 在我的整个应用程序中成为单例?

这取决于您的应用程序。如果您开发桌面应用程序,您可能只需要一个持久性管理器。此持久性管理器代表您桌面应用程序的数据库状态。但是对于其他情况,情况并非如此。例如,在 Web 应用程序中,您希望将请求或 session 彼此隔离。因此你使用了多个 PersistenceManager。例如,每个请求一个 PersistenceManager。每个 PersistenceManager 都保存当前请求的状态和事务。

因此 PersistenceManager 实例代表一个单元工作/事务。

关于java - JDO:PersistenceManager 是单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4040468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com