| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:18:59
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Boa Tarde Galera,
Estou desenvolvendo a parte de persistência de um sistema grande e sou iniciante em JPA.
Me parece um pouco redundante ter um DAO que contém um EntityManager para fazer basicamente o que ele já faz.
Gostaria de saber como vcs estão fazendo a camada de persistência de voces, utilizando JPA.
Grato
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:20:08
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Gostaria de aproveitar para já deixar aqui uma dúvida:
Estou trabalhando em um projeto em que cada cliente possui um schema do MySQL.
Todos os SCHEMAS possuem as mesmas tabelas, porém cada qual com dados de apenas um cliente
Isso é um problema para o JPA ?
Grato
This message was edited 1 time. Last update was at 11/11/2008 17:34:51
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:29:53
|
rafaelglauber
GUJ Master
![[Avatar]](/images/avatar/e9abec5e32203998211653b45023be1c.jpeg)
Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline
|
GraveDigger wrote:
Estou trabalhando em um projeto que possui um banco de dados por cliente.
Oi,
Poderia explicar melhor o problema? 1 SGDB para cada cliente (para cada acesso a aplicação???) ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:31:17
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
rafaelglauber wrote:
GraveDigger wrote:
Estou trabalhando em um projeto que possui um banco de dados por cliente.
Oi,
Poderia explicar melhor o problema? 1 SGDB para cada cliente (para cada acesso a aplicação???) ?
Oi Rafael,
Desculpe, não fui mto claro.
Na verdade todos os clientes são MySQL(vamos migrar em breve). Cada cliente possui um SCHEMA diferente, porém todos com as mesmas tabelas
Grato
This message was edited 1 time. Last update was at 11/11/2008 17:37:19
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:33:32
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Adicionado por engano
This message was edited 1 time. Last update was at 11/11/2008 17:33:58
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:40:51
|
rafaelglauber
GUJ Master
![[Avatar]](/images/avatar/e9abec5e32203998211653b45023be1c.jpeg)
Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline
|
Oi,
Você que provém essa infraestrutura para cada cliente(armazenamento, processamento e etc...)? Como funciona isso? A cada novo cliente de vocês se cria um novo schema e se repete os objetos do banco?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:43:09
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
rafaelglauber wrote:Oi,
Você que provém essa infraestrutura para cada cliente(armazenamento, processamento e etc...)? Como funciona isso? A cada novo cliente de vocês se cria um novo schema e se repete os objetos do banco?
Oi Rafael,
Para cada novo cliente, criamos um novo schema no banco e criamos as tabelas para esse novo schema, ai associamos o cliente a esse SCHEMA.
Grato
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:56:16
|
rafaelglauber
GUJ Master
![[Avatar]](/images/avatar/e9abec5e32203998211653b45023be1c.jpeg)
Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline
|
Oi,
Sinceramente eu desconheço a possibilidade de mapear dinamicamente com JPA, pois seria necessário isso para atender a sua necessidade. No JPA você mapeia o objeto e pode inclusive definir em qual schema (no caso dentro do persistence.xml), alterar isso dinamicamente eu desconheço. Verifique se tem a possibilidade de criar vários persistence.xml e poder carrega-los distintamente, se for possível será um caminho, mas também desconheço essa possibilidade.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:58:39
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
rafaelglauber wrote:Oi,
Sinceramente eu desconheço a possibilidade de mapear dinamicamente com JPA, pois seria necessário isso para atender a sua necessidade. No JPA você mapeia o objeto e pode inclusive definir em qual schema (no caso dentro do persistence.xml), alterar isso dinamicamente eu desconheço. Verifique se tem a possibilidade de criar vários persistence.xml e poder carrega-los distintamente, se for possível será um caminho, mas também desconheço essa possibilidade.
Oi Rafael,
Me parece que é possível passar configurações para o EntityManager de forma que ele cuide disso.
Agora a questão central do tópico:
DAO é necessário se eu tenho JPA ?
Grato
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 18:03:52
|
rafaelglauber
GUJ Master
![[Avatar]](/images/avatar/e9abec5e32203998211653b45023be1c.jpeg)
Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline
|
Oi,
Agora vamos entrar na parte filosófica da coisa. Se você imagina que nunca mais terá uma outra forma de persistência acredito que não seja necessário, até por que uma das funções do DAO é isolar a persistência e com JPA suas classes estariam repletas de anotações (meta-programação) referentes a persistência. Na minha opinião a resposta seria NÃO.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 18:06:40
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
Estou pensando em usar Active Record.
Gostei bastante do que vi no Rails. Alguém vê algum problema(ou tem dicas) para essa abordagem implementada "na mão" ?
Penso em algo como:
Pessoa possui PessoaRepository
E delega para o repositório os métodos relacionados a persistência.
O que vcs acham ?
Isso teria problemas relacionado a transações ?
Minha arquitetura possui: Seam + EJB3
Grato
This message was edited 1 time. Last update was at 11/11/2008 18:07:27
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 18:52:26
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline
|
EMHO,
Na maioria dos casos, não. Mas em casos mais complexos, onde você começa a ter código que poderia ser encapsulado em um método, é interessante. Talvez providencie os DAOs inicias apenas liberando acesso direto ao EntityManager, se um dia tu precisar que eles sejam mais espertos, já está encapsulado, e aí basta tratar.
|
follow me
pitacos
"The most problems that teams face are about communication, and all the others are too." - Dan North
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 18:56:18
|
GraveDigger
JavaEvangelist
![[Avatar]](/images/avatar/3332880692313818482a5a0286608ab6.jpg)
Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline
|
peerless wrote:EMHO,
Na maioria dos casos, não. Mas em casos mais complexos, onde você começa a ter código que poderia ser encapsulado em um método, é interessante. Talvez providencie os DAOs inicias apenas liberando acesso direto ao EntityManager, se um dia tu precisar que eles sejam mais espertos, já está encapsulado, e aí basta tratar.
Ai eu penso:
Colocar os métodos que podem ser reaproveitados em outro lugar e chamar apenas quando necessário, pq em 90% dos meus casos o JPA cru resolve. A meu ver, não vale a pena criar uma camada extra com métodos que "eu possa vir a precisar um dia".
Estou animado com a idéia do Active Record no Java.
Alguém ai já fez ? Estou com receio por causa das transações, como seria isso ?
Grato
This message was edited 1 time. Last update was at 11/11/2008 18:56:55
|
SCWCD
SCJP
Pedro Henrique Lobato Sena
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 18:59:06
|
71C4700
JavaEvangelist
![[Avatar]](/images/avatar/72824049a9d187c8848e6ba146b02ed3.jpg)
Membro desde: 25/03/2008 08:18:35
Mensagens: 364
Localização: Por ai...
Offline
|
Desculpe pela opiniao, mas pensando por um outro lado, mas tambem filosofico !
O uso de um DAO seria interessante, pois voce poderia cria uma DAOGeneric abstraindo as operações comuns com salvar, atualizar e excluir.E estender este DAOGeneric para criar o DAOPessoa, por exemplo.
Acretido que seria melhor,até porque poderia-se uilizar de arquivos xml para comfigurar os mapeamentos e atributos de uma Entidade que será persistida no banco.
Mas como falei antes, minha opinião, mesmo sendo um pouco leigo, torna-se uma solução mais flexivel e reusavel do sistema em si.
|
[]This is Job!!!°°°°° |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 19:56:10
|
Leonardo3001
GUJ Ranger
Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline
|
A parte de persistência costuma ser pequena, então não há muito ganho no DAO.
Mas um projeto que eu achei bem interessante, pra praticamente reduzir código de persistência a zero é o Polyforms. É feito por uns chineses e ainda está na infância, pelo que eu vi, e mas com esse framework, todo o código de persistência é criado dinamicamente pra você. Vale a pena dar uma olhada.
This message was edited 1 time. Last update was at 11/11/2008 19:56:31
|
Leonardo Veríssimo
-------------------------------------------------
Objectzilla |
|
|
 |
|
|