Estudando a JPA mais profundamente, me deparei com isto:
Quando usar PersistenceContextType.EXTENDED ou PersistenceContextType.TRANSACT?
Olha uma discussão sobre isto aqui:
http://www.guj.com.br/java/98508-lazyinitializationexception-2-dias-tentando-resolver–resolvido
No entanto, segundo a documentação, usando o tipo EXTENDED, temos:
[code]1) todas as operações de leitura podem ser executadas fora de uma transação:
- find(),
- getReference(),
- refresh(), e
- consultas afins usando queries.
- Algumas operações de modificações podem ser executadas fora de uma transação,
ficando na fila ateh o momento em que ocorrer uma chamada deste tipo:
- persist(),
- merge(),
- remove().
- Algumas operações não podem ser chamadas fora de uma transação:
- flush (),
- lock().[/code]
Então eu não vejo muito porque não usar o tipo EXTENDED.
Gostaria que o pessoal da Caelum, que tem bastante experiência, se pudesse esclarecer prá gente um pouco mais sobre o assunto, que é tão importante, mas ainda permanece meio obscuro, colocando um ponto final nesta discussão que até hoje ninguém consegue esclarecer com objetividade.
Obrigado a todos.