CDI em Enum (Singleton)

E aew gente, na paz???

Cai na bobeira de criar um singleton utilizando um Enum (Java Efetivo) e agora estou com dificuldade de injetar um EntityManager, tem relação?

Como faço para injetar o EntityManager no enum utilizando o CDI??? Tem como???

Além disso esse enum é um repositório, bem longe do managed bean!!!

managedBean -> service -> repo -> dao

Tem como utilizar CDI nessa arquitetura? Como eu faço???

Thx,
PH

Desculpe, mas isso seria o pior pattern possível (assim penso eu).

Enum não foi feito para essas coisas.

Use uma classe, um EJB ou qualquer outra coisa…

Java Efetivo é um livro bom, mas ele trata mundo JSE no caso desse singleton, alguma coisas desse livro devem ser beeeeeem analisadas antes de serem implementadas.

Mas tem como utilizar?

Tem jeito com o Enum?

[quote=palerique]Mas tem como utilizar?

Tem jeito com o Enum? [/quote]Nunca vi ou ouvi falar disso. Sorry.

na real nao entendi a do Enum

[quote=Raphael Lacerda]na real nao entendi a do Enum[/quote]Esse livo Effective Java faz um exemplo de Singleton utilizando enum.

Ele mostra que é uma boa usar enum para isso, mas eu não vejo por que utiliza-lo como factory de entity managed.

:smiley: :smiley: :smiley: :smiley:

Ou Rapha, o Joshua explica que melhor forma de se fazer singleton, para garantir de fato uma única instância é utilizando enum!

Mas me rendi a outra possibilidade, agora vou gastar a memória à vontade!

Se for pensar direitinho foge totalmente do propósito de um enum utilizá-lo como singleton por causa de suas características.

Mas, para efeito de conhecimento, se alguém souber como se faz e quiser postar eu agradeço.!

Valeu people!

[quote=palerique] :smiley: :smiley: :smiley: :smiley:

Ou Rapha, o Joshua explica que melhor forma de se fazer singleton, para garantir de fato uma única instância é utilizando enum!

Mas me rendi a outra possibilidade, agora vou gastar a memória à vontade!

Se for pensar direitinho foge totalmente do propósito de um enum utilizá-lo como singleton por causa de suas características.

Mas, para efeito de conhecimento, se alguém souber como se faz e quiser postar eu agradeço.!

Valeu people![/quote]Pois é. Hoje você pode usar o @Singleton do EJB, ou o Singleton do Spring e assim vai.

Se não for por conhecimento apenas, não vale a pena. Boa sorte ae.

Melhor forma mesmo é usar IoC e delegar a responsabilidade de manter isso pro Container!
@Singleton como já foi citado!

Engraçado, li o livro do Joshua e não lembro dessa parte de Enum com Singleton! Vou até reler aqui!

abraços

[quote=palerique] :smiley: :smiley: :smiley: :smiley:

Ou Rapha, o Joshua explica que melhor forma de se fazer singleton, para garantir de fato uma única instância é utilizando enum!

Mas me rendi a outra possibilidade, agora vou gastar a memória à vontade!

Se for pensar direitinho foge totalmente do propósito de um enum utilizá-lo como singleton por causa de suas características.
[/quote]

Não, não foge. O Efective Java explica exatamente por quê. A sua decisão não foi errada, vc só esqueceu que em JEE certas coisas não valem, e signleton é uma delas. O seu problema foi querer usar Singeton e não o ter usado enum para isso ( foi um problema conceptual, não de implementação.
Hoje em dia vc pode usar um EJB @Singleton , mas teria que usar JEE 6 e não sei de é isso que vc quer.

O managedbean pode ser qualquer coisa se não precisa se preocupar se é singleton ou não. Deixe o container se preocupar com isso.