如何在持久性管理器关闭后使用检索到的对象。 JDO

时间:2017-11-14 13:13:12

标签: java database java-ee jdo datanucleus

我想在持久性管理器连接关闭后使用jdo的detachCopy方法来使用对象,但是detachCopy对性能至关重要。

我正在尝试从数据库中获取Role对象。角色类由StaticRole类扩展。

    PersistenceManager pm = PersistenceFactory
            .getPersistenceManager(clientId);
    Transaction tx = pm.currentTransaction();
    try {
        tx.begin();
        List<Role> allRoles = (List<Role>) pm
                .detachCopyAll(getAllRoles(pm));
        tx.commit();
        return allRoles;
    } finally {
        if (tx.isActive()) {
            tx.rollback();
        }
        pm.close();
    }

这里我不想使用detachCopy方法因为它减慢了我的代码。我也试过makeTransient方法,但它没有递归地工作,即它给了我角色但是静态角色数据丢失了。我也尝试使用makeFetchplan和makeTransient,但这也需要时间。

请有人帮助我。

0 个答案:

没有答案