Não tenho certeza se eu entendo TransactionAwarePersistenceManagerFactoryProxy

192

Estou tentando usar o org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxyprojeto no meu Spring, mas não tenho certeza de como usá-lo ou se é exatamente o que estou procurando. Sei que isso pode ajudar a fazer meus DAOs funcionarem com um JDO simples PersistenceManagerFactory. Outra pergunta é: o que acontece se o proxy não for feito corretamente? Ainda posso usá-lo para acessar minha fábrica e criar um gerenciador de persistência com reconhecimento de transação? Se o objeto gerenciado pela fábrica é um singleton, isso muda as coisas? Por que não acessar apenas o PersistenceManagerFactory diretamente? Talvez PersistenceManagerFactoryUtils.getPersistenceManagerseria mais adequado às minhas necessidades? Pode getObjectretornar nulo?

megazord
fonte
193
Ri muito! Desculpe, mas não posso evitar. Eu quase chorei quando vi o nome do objeto.
Eric des Courtis
133
E é por isso, queridos filhos, que Java deve parar de tomar drogas.
Griwes
48
Você sabe que está no mundo Java há muito tempo, quando nomes como esse não parecem tão irracionais ...!
27713 Brian
27
Rapazes. Ei pessoal, ouçam. Você está cometendo o erro do novato novamente. O Spring Framework não é Java e o Java não é o Spring framework. Não os confunda.
Torben
49
Com relação à pergunta original: esse é o tipo de pesca à linha de alta qualidade que eu realmente aprecio.
Torben

Respostas:

20

As respostas estão disponíveis diretamente na documentação

Sei que isso pode ajudar a fazer meus DAOs funcionarem com um JDO PersistenceManagerFactory simples.

Sim. O proxy TransactionAwarePersistenceManagerFactoryProxy permite que os DAOs trabalhem com uma referência simples JDO PersistenceManagerFactory, enquanto ainda participam do gerenciamento de transações e recursos da Spring (ou de um servidor J2EE). Você certamente pode usá-lo em seu aplicativo. Mas, sem conhecer exatamente suas necessidades, não podemos confirmar mais.

Ainda posso usá-lo para acessar minha fábrica e criar um gerenciador de persistência com reconhecimento de transação

Os DAOs poderiam alternar perfeitamente entre um JNDI PersistenceManagerFactory e esse proxy para um PersistenceManagerFactory local.

Se o objeto gerenciado pela fábrica é um singleton, isso muda as coisas? Por que não acessar apenas o PersistenceManagerFactory diretamente?

Geralmente, é preferível gravar seus DAOs baseados em JDO com o JdoTemplate da Spring, oferecendo benefícios como exceções consistentes de acesso a dados em vez de JDOExceptions na camada DAO. No entanto, o gerenciamento de recursos e transações do Spring (e Injeção de Dependências) também funcionará para DAOs gravados na API JDO simples.

Chand Priyankara
fonte