| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/11/2007 21:19:50
|
feliperod
JavaTeenager
![[Avatar]](/images/avatar/12d836bf64839f987338414ccbec657f.jpg)
Membro desde: 07/11/2006 14:10:54
Mensagens: 184
Offline
|
Pessoal,
talvez eu tenha entendido errado algum conceito do DDD, mas eu procurei em muitos lugares, inclusive no GUJ e não achei nenhuma resposta simples para minha pergunta. Com certeza em algum lugar tem a resposta e talvez seja tão trivial que ficou perdida no tempo.
Eu entendo um pouco sobre DAOs e sobre Repositories, mas e as Entities?
Minha classe de Domain terá as regras de negócio e chama o repository para operações (como um service, certo?). O Repository pode executar algumas regras pertinentes a coleções de entities e chama o DAO quando necessário. O DAO precisa obter um objeto do Banco e no caso de um JPA da vida, deve utilizar um pojo com as anotações de JPA.
Mas aí é que fica minha dúvida. As anotações vão na Entity (falando em entity de Domain) ou vão em classes Java "replicadas" na camada de persistência. Caso sim, então eu tenho dois POJOs, um representando o Domain e outro simplesmente para a Persistência.
Pergunto isso porque não gosto da idéia de anotações no meu Domain. Minha classe de Domain não compila sem os jars do JPA.
Abração a todos...
|
Felipe Rodrigues de Almeida
No Twitter: @felipero
www.fratech.net
The Fratech way |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/11/2007 23:49:21
|
Javabuntu
GUJ Master
![[Avatar]](/images/avatar/00053f5e11d1fe4e49a221165b39abc9.jpg)
Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline
|
tem um tópico aqui no GUJ que acho q vai tirar sua dúvida..
http://www.guj.com.br/posts/list/67988.java
|
SCJP 6
SCJD
SCWCD 5
Itil V2 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 12:04:14
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Duplicar nem pensar... não existe motivos para isso, ainda mais se falando de POJOS.
Se a Entity JPA é POJO e seu Entity DDD é POJO, então os objetos são identicos.
Metadados são simplesmente metadados.
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 13:38:27
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
Talvez seja interessante utilizar o JPA com xml ao invés dos annotations. Isso para que o seu modelo não fique amarrado a forma que ele será persistido na base de dados. Mas não acho que seja grave utilizar annotations em seus entities e value objects. Só depende do quão purista você é, rsrs... Não é por que tem annotations que você não pode persistir as entidades utilizando jdbc.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 13:48:22
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Thiago Senna wrote:Só depende do quão purista você é, rsrs..
Em outras palavras, depende o quanto chato você quer ser... hehe. Seja um cara legal com sua equipe, use anotações .
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 20:11:46
|
Javabuntu
GUJ Master
![[Avatar]](/images/avatar/00053f5e11d1fe4e49a221165b39abc9.jpg)
Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline
|
na verdade a escolha é sua, contanto que vc entenda que não fique ambos....ou um ou outro.......no meu caso uso bean com anotações...não acho poluído não....
|
SCJP 6
SCJD
SCWCD 5
Itil V2 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 20:59:41
|
feliperod
JavaTeenager
![[Avatar]](/images/avatar/12d836bf64839f987338414ccbec657f.jpg)
Membro desde: 07/11/2006 14:10:54
Mensagens: 184
Offline
|
Bom, primeiramente, obrigado pelas opiniões.
Mas ainda fica uma questão. Eu posso usar uma entity anotada com jdbc na unha, mas a questão é outra. Se meus domains tem que ser POJO, penso que ele não pode ter dependencias.
Acho que a dúvida seria a seguinte:
Se um POJO é suposto ser uma classe que não dependa de nenhuma API para executar, como uma entity JPA anotada seria um POJO?
Imagine que se eu anoto um POJO com a anotaao @Entity eu sou obrigado a fazer import javax.persistence.Entity e isso me obriga a levar o persistence.jar junto com o POJO para onde ele for. Será que ele ainda é um POJO?
Sei que é meio polêmico, mas quero saber com o pessoal tá usando isso no escopo de Domain Driven Design
|
Felipe Rodrigues de Almeida
No Twitter: @felipero
www.fratech.net
The Fratech way |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 21:30:54
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Anotações são apenas informações jogadas ao vento, não são códigos.
No caso do JPA, sua classe continua sendo POJO se apenas for anotada, mas deixa de ser se você utilizar EntityManager dentro dela (por isso use a abstração oferecida por um Repository).
Uma classe anotada não muda de comportamento, não ganha novas características nem nada, quem infere isso são os manipuladores das anotações... esses sim não são POJOS.
Levar os jars legados é um fato. Mas nada que uma refatoração não resolva. O melhor de tudo, a refatoração vai ser muito simples e sem possibilidades de erros em execução, pois as anotações não atribuem comportamentos inesperados... tudo que vc for pegar de erro será em tempo de compilação (importações, etc).
Eu utilizo algumas Entities JPA como entidades do DDD sem dor na consciência.
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 23:57:27
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Bom senso... bom senso... bom senso... desenvolvimento de software se resume a bom senso!
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 13:28:28
|
feliperod
JavaTeenager
![[Avatar]](/images/avatar/12d836bf64839f987338414ccbec657f.jpg)
Membro desde: 07/11/2006 14:10:54
Mensagens: 184
Offline
|
É talvez seja um pensamento muito purista, hoje tenho utilizado com as annotations nas entities mesmo. Mas seria ótimo não precisar fazer isso.
Alias, consigo isso com frameworks que não são baseados em annotations. Acho que essa seria a solução para domains que são distribuidos como uma lib, para utilização em JEE, e JME ao mesmo tempo. Ou simplesmente manter dois projeto separados, um para JEE e um para JME.
De qualquer forma, acho que o rodrigo tem razão. Utilizar de bom senso resolve bastante coisa.
|
Felipe Rodrigues de Almeida
No Twitter: @felipero
www.fratech.net
The Fratech way |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/11/2007 07:36:48
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
O problema eh que metadados (annotations) acabam por criar uma outra 'dimensao' nos seus objetos. Minha dica eh:
- use o que for mais simples
- nao perca muito tempo viajando sobre annotations ao inves de fazer seu trabalho, eh confuso mesmo
- nao espalhe as anotacoes de infra pelas classes o quanto puder mas sem radicalismos
A forma com que os metadados sao usados em Java eh pessima. Metadados deviam fazer tagging apenas.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/11/2007 10:06:48
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Que risco você enxerga nas anotações da JPA e EJB3, Phillip?
Tenho criado algumas anotações minhas nos meus projetos. Você acha isso prejudicial de alguma forma também?
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/11/2007 10:27:54
|
AvilaCS
Thread.start()
![[Avatar]](/images/avatar/6b79fc67a437b9cc901233dd856aa061.jpg)
Membro desde: 03/02/2007 18:28:12
Mensagens: 43
Localização: São Paulo
Offline
|
Também estou criando as anotações JPA nas entidades e EJB3 nos repositórios!
Vocês vêem algum tipo de problema nisto?
Grato.
|
____________________________________
Jossemar Ávila de Morais
jossemar.avila@siriussoftware.com.br
Sírius Software
Visite: www.siriussoftware.com.br
Insista, persista e nunca desista pois um dia você conquista. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/11/2007 12:07:50
|
Emerson Macedo
Virtual Machine Man
![[Avatar]](/images/avatar/360c19682e81f21d55846685c1701179.jpg)
Membro desde: 01/08/2006 16:55:28
Mensagens: 689
Localização: Rio de Janeiro - RJ
Offline
|
Lezinho wrote:Anotações são apenas informações jogadas ao vento, não são códigos.
No caso do JPA, sua classe continua sendo POJO se apenas for anotada, mas deixa de ser se você utilizar EntityManager dentro dela (por isso use a abstração oferecida por um Repository).
O que tem a ver ter um atributo de instância com ser um POJO ?
|
Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com
"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/11/2007 12:40:52
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
Não vejo a utilização de annotations nas entidades como problema dependendo do projeto. Levando em consideração que o objetivo do DDD é criar um domínio e que este pode ser reaproveitado em outros projetos independente da base de dados, então acho bom não poluir o código com anotações específicas do JPA. Até por que não seria legal depender de um jar do JPA para compilar suas classes.
Enfim... quais são e quantos sãos os ambientes que o seu domínio terá que atuar? Sei lá.. acho que ainda fica valendo o bom senso.. rsrs..
|
|
|
 |
|
|