Можно ли автоматически связать JDO PersistenceManager или только PersistenceManagerFactory? - PullRequest
1 голос
/ 18 сентября 2010

Возможно ли Autowire JDO PersistenceManager?

В приведенном ниже примере только PersistenceManagerFactory равен Autowired, тогда как PersistenceManager получается с использованием метода получения и утилит перед каждой операцией.

import org.springframework.orm.jdo.PersistenceManagerFactoryUtils;

@Service
public class MainServiceImpl implements MainService
{

    @Autowired
    private PersistenceManagerFactory pmf;

    private PersistenceManager pm;

    public void setPersistenceManager(PersistenceManager pm)
    {
        this.pm = pm;
    }

    public void setPmf(PersistenceManagerFactory pmf)
    {
        this.pmf = pmf;
    }

    public PersistenceManagerFactory getPmf()
    {
        return pmf;
    }

    public PersistenceManager getPersistenceManager()
    {
        return PersistenceManagerFactoryUtils.getPersistenceManager(pmf, true);
    }

}

1 Ответ

0 голосов
/ 19 сентября 2010

Это не выглядит вероятным.

Если вы посмотрите на обзор классов Spring JDO , вы увидите, что это не FactoryBean, который возвращает PersistenceManager.

Конечно, вы можете легко реализовать фабричный бин самостоятельно , который имеет зависимость типа PersistenceManagerFactory и возвращает PersistenceManager.

Возможно, вы захотите использовать TransactionAwarePersistenceManagerFactoryProxy если вы всегда хотите автоматически связать текущий привязанный к потоку PersistenceManager (вот выдержка из JavaDoc)

Proxy для целевого JDO PersistenceManagerFactory, возвращая текущий привязанный к потоку PersistenceManager (управляемый Spring транзакционный PersistenceManagerили один OpenPersistenceManagerInView PersistenceManager) в getPersistenceManager (), если есть.

...