Hibernate JPA – Herança Single Table – Alterando o tipo do objeto persistido.

model-diagram.jpa

Existem cenários no desenvolvimento de software onde você utiliza a herança para prover o reuso e herdar características semelhantes entre objetos. Mas é importante lembrar que o mundo Orientado a Objetos, não se reflete da mesma maneira no mundo do Banco de Dados Relacional. E vale ressaltar, utilize herança com cuidado, não a utilize apenas para prover reuso, pois este tipo de uso é conhecido como "herança por preguiça" smiley, observe se a semântica entre as classes existe de fato.

O Framework de Persistência Hibernate quando utiliza a herança no modo padrão (Single Table), cria um campo DTYPE para distinguir o tipo do objeto persistido. Imagine que você tenha uma classe abstrata Usuario e classes concretas que herdam de Usuario. Neste exemplo UsuarioA e UsuarioB, mas poderia ser Supervisor, Gerente, Vendedor, etc… E se algum dia o Vendedor fosse promovido a Supervisor! Com Hibernate não seria tão simples mudar isso utilizando o MERGE do seu objeto EntityManager ou Session. Bem, então aqui vai a dica que pelo menos fucionou até o momento com a versão 4.3.6 do hibernate.

Eu não promovo o uso de Queries Nativas, mas neste caso específico ela resolveu! Então fica a questão! O problema está na modelagem com herança? Ou é uma restrição do framework esta mudança?

Se você gostou? Compartilhe:
Publicado em Artigos, Desenvolvimento, JAVA
4 comentários sobre “Hibernate JPA – Herança Single Table – Alterando o tipo do objeto persistido.
  1. Anderson Leite disse:

    “Tem gente que gosta de ter problemas!”
    Larga esse negócio de usar herança…
    Resolve esse caso ai com uma simples composição.
    Um forte abraço meu camarada!!!

  2. Anderson Leite disse:

    Hoje o requisito te jura que a classe é filha da outra, amanhã ele vai dizer que é irmã.
    Sai dessa, não corra o risco.
    kkkkkkkk!
    Bom post, continue assim.
    Um forte abraço meu camarada!!!

  3. Anderson Leite disse:

    Esse seu Anti Spam está muito radical…
    Configura ele ai para mais palavras, senão tenho que dividir o comentário em 10 prestações.

  4. Wallace Espindola disse:

    Excelente artigo Eugênio! Acredito que caiba um teste de uma prova de conceito usando o padrão Strategy através de interfaces, ao invés de herança. Se conseguir compartilhe aqui no site. ;-)
    Um abraço.

Deixe uma resposta para Wallace Espindola Cancelar resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Protected by WP Anti Spam
  • Treinamentos

    Treinamentos

    Precisa treinar sua equipe?

  • Portfólio

    Portfólio

    Conheça meus trabalhos

  • Artigos

    Artigos

    Vamos trocar conhecimento, leia meus artigos e comente.

  • Questões de JAVA

    Questões de JAVA

    Questões comentadas de diversos concursos.

Categorias
Últimos Artigos