EJB3: uma Entity por tabela?

5 respostas
Tchello

Bom dia novamente caros colegas!

Tenho mais uma pergunta sobre EJB3.
Aos exemplos que tenho feito notei que sempre é criada uma entidade por tabela que tenhos na base relacional.
Porém fiquei curioso: é realmente necessário? caso falso, como eu trabalharia nas outras tabelas sem que houvesse entidades para mapea-las e SEM EJB QL e qualquer outra gambiarra? (ou seja, com recursos “oficiais” do EJB).
Pesquisei mais um pouco e encontrei esse material que diz:


3.6.3. Uma tabela por classe entidade concreta
Esta estratégia não é requerida em EJB 3.0, por isso não será abordada neste artigo.

Fonte: http://disciplinas.dcc.ufba.br/pub/MATA60/WebHome/persejb.pdf

Parou por ai,não deu mais explicações. Mas o que vi em outra fonte foi que isso era necessário antes do EJB3:

Fonte: http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs

Caso eu faça uma entidade por tabela do base relacional, seria trabalho a toa, anti-pattern, estupidez ou pode ser realmente necessário?
Essa informação tem sido realmente mais dificil de ser obtida, por isso peço a opinião de vocês, colegas, que sempre mantém um alto nível nas discuções daqui. Sinto-me muito feliz de participar desse grupo.

Obrigado pela atenção galera, abraços!

5 Respostas

ignacio83

Pelo que eu conheço, normalmente é um Entity por Tabela, existem casos específicos em que isso pode não ocorrer:

  1. Herança: Mais de uma entidade pode representar uma única tabela. Pesquise por @Inheritance
  2. Relacionamentos ManyToMany: Nesses relacionamentos a tabela do “meio” pode não ser uma Entity. Pesquise por @ManyToMany

Porém o contrário disso, um Entity representar mais de uma tabela, eu desconheço.

Tchello

ignacio83:
Pelo que eu conheço, normalmente é um Entity por Tabela, existem casos específicos em que isso pode não ocorrer:

  1. Herança: Mais de uma entidade pode representar uma única tabela. Pesquise por @Inheritance
  2. Relacionamentos ManyToMany: Nesses relacionamentos a tabela do “meio” pode não ser uma Entity. Pesquise por @ManyToMany

Porém o contrário disso, um Entity representar mais de uma tabela, eu desconheço.


A sim, quanto a isso estou ciente.
Ontem mesmo fiz um mega estudo/review sobre os 7 tipos de relacionamentos.
Comprei o livro Enterprise JavaBeans 3.0 do O’Reilly (recomendo!) e tem me ajudado DEMAIS nesses conceitos, mas ainda pairou essa dúvida devido as discuções encontradas por aqui.
O que me deixou intrigado mesmo foi a aparente possibilidade de haver menos entidades do que tabelas (desconsiderando as relações @ManyToMany, onde a tabela intermediária é apenas “citada” como uma @JoinTable) não o inverso.
Com isso em mente pairou a pergunta: como persistir/trabalhar sobre os dados de determinadas tabelas que não tem entidades pra mapea-las?
Pra “ajudar” encontrei essas citações que coloquei no post inicial hehehe
Vlw!

Tchello

Então galera, confirmado?
Tirando aquelas exceções (de herança e @ManyToMany) vai ter sempre uma entidade pra cada tabela?

Abraços!

Jair_Rillo_Junior

Tchello:
Então galera, confirmado?
Tirando aquelas exceções (de herança e @ManyToMany) vai ter sempre uma entidade pra cada tabela?

Abraços!

Na associação OneToMany unidirecional, haverá 3 tabelas (similar ao ManyToMany). No caso de OneToMany bidirecional (que é o mesmo que ManyToOne), ai sim serão 2 tabelas (1 para cada objeto).

L

Existem também os casos das classes “embeddable”. É uma classe que não mapeia uma tabela, mas um subconjunto de colunas de uma outra tabela.

Criado 26 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 5
Participantes 4