DAO é necessário com JPA ?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
GraveDigger
JavaEvangelist
[Avatar]

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

GraveDigger
JavaEvangelist
[Avatar]

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

rafaelglauber
GUJ Master
[Avatar]

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???) ?
GraveDigger
JavaEvangelist
[Avatar]

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

GraveDigger
JavaEvangelist
[Avatar]

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

rafaelglauber
GUJ Master
[Avatar]

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?
GraveDigger
JavaEvangelist
[Avatar]

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

rafaelglauber
GUJ Master
[Avatar]

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.

GraveDigger
JavaEvangelist
[Avatar]

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

rafaelglauber
GUJ Master
[Avatar]

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.
GraveDigger
JavaEvangelist
[Avatar]

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

peerless
GUJ Master
[Avatar]

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





[MSN]
GraveDigger
JavaEvangelist
[Avatar]

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

71C4700
JavaEvangelist
[Avatar]

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!!!°°°°°
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
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team