只是基础知识:我正在使用由嵌入式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
应该如何工作。我以为只要需要PersistenceManagerFactory
来查询或持久存储数据,我都只是打电话给PersistenceManager
,这样我就可以得到线程安全的东西。我整个人的单身
应用?
线程,执行查询和
更新在JDO / DataNucleus中的工作?
最佳答案
我是否需要在整个应用程序中使PersistenceManager单身?
这取决于您的应用程序。如果您开发桌面应用程序,则可能只需要一个持久性管理器。此持久性管理器代表您的桌面应用程序数据库的状态。
但是,对于其他情况并非如此。例如,在Web应用程序中,您希望将请求或会话彼此隔离。因此,您使用多个PersistenceManager。例如,每个请求一个PersistenceManager。每个PersistenceManager都保存当前请求的状态和事务。
因此,PersistenceManager-instance表示单元工作/事务。