DataNucleus将 - L1高速缓存,分离
*对不起任何复式 - 不是肯定的入门计算器怎么会,而不是在DataNucleus将论坛中的条目* ** * ** * **DataNucleus将 - L1高速缓存,分离
大家好 -
我们一直在使用DN(DataNucleus将)在过去的几个月里,它看起来不错。
但是,在阅读文档时我感到困惑,需要一些帮助。
场景:
我有一个类,它包含几个字段(如主键,姓名,年龄等)和B类的列表(可以说类地址)。
我做了两个@PersistenceCapable(detachable =“true”),并且还为List提供了@Persistent和@Join的注解,其中defaultFetchGroup = true和recursionDepth = -1。
现在,在一个DAO层 - 我得到了ClassA的列表,并且关闭了PM;这个对象然后被交给另一个类/方法进行一些处理。基于我的理解和阅读,我认为在detachable =“true”的情况下,我可以在PersistenceManager(PM)关闭后让此实例处理。
但是,似乎我只能这样做,如果我没有将Level1缓存设置为无。如果我将它设置为none,那么在PM关闭后,我无法获得除主键以外的ClassA的任何字段。我不断收到经理关闭异常。
我之所以设置1级高速缓存中没有一个帮助我们的系统也做批量插入平行于没有臃肿的缓存和JVM堆。
我在正确的轨道上吗?或者我的理解是关闭的?你可以提供什么建议来解决这种情况? (不必有两个单独的JVM进程 - 一个用于批量插入,一个用于查询和读取)
我希望我是清楚我的问题。
非常感谢!
Regards,
Mike。
关闭管理JDO的PM直到在容器的请求范围内完成它为止是不理想的。我的第一个建议是在你完成之前保持开放。
有没有“自动分离”在默认情况下,你必须调用pm.detachCopy()之前关闭()或设置属性datanucleus.DetachOnClose。在分离的副本上执行的任何更改都不会反映在您的数据存储中,直到您将其与新的PM保留为止。
你能解释datanucleus.DetachOnClose属性的工作原理吗?当我调用'pm.close()'的时候,手中的对象会不会分离出来,就是这样?! –
请参阅http://www.datanucleus.org/products/accessplatform/jdo/attach_detach.html – TheArchitect