Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Home
Java
Design Patterns
EJB
Governana de TI
Java Server Faces
Virtualizao
Home
Java
Design Patterns
EJB
Governana de TI
Java Server Faces
Virtualizao
Home
Java
Design Patterns
EJB
Governana de TI
Java Server Faces
Virtualizao
Java, JPA
IMPORTANTE!!!!!!
Antes de iniciar essa peregrinao, vou assumir que voc tem os seguintes
conhecimentos:
Desta forma, vou ignorar todos os passos bsicos de con gurao de projeto e
bibliotecas e partir para o que interessa. Vamos l!
http://www.devall.com.br/blog/show/8080 2/10
05/02/2017 TiposdeheranadoHibernateRaphaelNeves
1 @Entity
2 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
3 @DiscriminatorColumn(name = "tipo", length = 1, discriminatorType = DiscriminatorType
4 @DiscriminatorValue("P")
5 public abstract class Pessoa {
6
7 @Id
8 @GeneratedValue(strategy = GenerationType.AUTO)
9 private Long id;
10
11 @Column(insertable = false, updatable = false)
12 private String tipo;
13
14 }
1 @Entity
2 @DiscriminatorValue("F")
3 public class PessoaFisica extends Pessoa {
4
5 @Column
6 private String cpf;
7
8 }
1 @Entity
2 @DiscriminatorValue("J")
3 public class PessoaJuridica extends Pessoa {
4
http://www.devall.com.br/blog/show/8080 3/10
05/02/2017 TiposdeheranadoHibernateRaphaelNeves
5 @Column
6 private String cnpj;
7
8 }
necessrio muita ateno ao obter registros desta tabela, pois digamos que a
pesquisa seja baseada no ID do registros. Como a super classe do tipo Pessoa, ela
no ter acesso aos atributos CPF e CNPJ, ainda que o registro possua
discriminador. Neste caso ser necessrio veri car o tipo do dado para ento
manipular os atributos espec cos. Pesquisas customizadas por atributos
espec cos das subclassespodem minimizar este trabalho!
http://www.devall.com.br/blog/show/8080 4/10
05/02/2017 TiposdeheranadoHibernateRaphaelNeves
1 @Entity
2 @Inheritance(strategy = InheritanceType.JOINED)
3 public abstract class Pessoa {
4
5 @Id
6 @GeneratedValue(strategy = GenerationType.AUTO)
7 private Long id;
8
9 }
1 @Entity
2 @PrimaryKeyJoinColumn(name = "id")
3 @Table(name = "pessoa_fisica")
4 public class PessoaFisica extends Pessoa {
5
6 @Column
7 private String cpf;
8
9 }
1 @Entity
2 @PrimaryKeyJoinColumn(name = "id")
3 @Table(name = "pessoa_juridica")
4 public class PessoaJuridica extends Pessoa {
5
6 @Column
7 private String cnpj;
8
9 }
http://www.devall.com.br/blog/show/8080 5/10
05/02/2017 TiposdeheranadoHibernateRaphaelNeves
1 @Entity
2 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
3 public abstract class Pessoa {
4
5 @Id
6 @GeneratedValue(strategy = GenerationType.AUTO)
7 private Long id;
8
9 }
http://www.devall.com.br/blog/show/8080 6/10
05/02/2017 TiposdeheranadoHibernateRaphaelNeves
As classes derivadas bastam ser anotadas como uma entidade JPA. Vejamos:
1 @Entity
2 @Table(name = "pessoa_fisica")
3 public class PessoaFisica extends Pessoa {
4
5 @Column
6 private String cpf;
7
8 }
9
10
11 @Entity
12 @Table(name = "pessoa_juridica")
13 public class PessoaJuridica extends Pessoa {
14
15 @Column
16 private String cnpj;
17
18 }
1 @Entity
2 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
3 public class Flight implements Serializable { ... }
http://www.devall.com.br/blog/show/8080 7/10
05/02/2017 TiposdeheranadoHibernateRaphaelNeves
Posts relacionados
25/11/2016
27/01/2017
15/12/2016
Leave a Comment
Name (required)
Mail (required)
Website
Leave a Comment
Post anterior
Entendendo o equals e o hashCode
Prximo post
Redimensionando disco virtual do VirtualBox
Tags
http://www.devall.com.br/blog/show/8080 9/10
05/02/2017 TiposdeheranadoHibernateRaphaelNeves
cmt dao desenvolvimento design pattern disco virtual ejb equals generics governana hashCode herana java jpa jsf mercado
Posts recentes
Entendendo o equals e o hashCode
Tipos de herana do Hibernate
Redimensionando disco virtual do VirtualBox
Gerenciando transaes com EJB
Diferena entre String, StringBu er e StringBuilder
http://www.devall.com.br/blog/show/8080 10/10