Next create your persisntence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org /2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="testes"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- meu provider é o hibernate -->
<!-- APESAR DA PESSOA NAO SER UMA ENTIDADE COLOQUE ELA AQUI -->
<class>br.com.drem.entity.Pessoa</class>
<class>br.com.drem.entity.PessoaFisica</class>
<class>br.com.drem.entity.PessoaJuridica</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!-- postgres é o nome da minha database (Pode haver vários esquemas nela)-->
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/datajava" />
<!-- drive do postgresql 9 -->
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<!-- ususário da base de dados -->
<property name="javax.persistence.jdbc.user" value="andremart" />
<!-- Senha -->
<property name="javax.persistence.jdbc.password" value="SUA SENHA AQUI" />
<!-- nome do schema-->
<property name="hibernate.default_schema" value="SEU ESQUEMA AQUI" />
<!-- para visualizarmos as querys no console -->
<property name="hibernate.show_sql" value="true" />
<!-- para formatamos as querys -->
<property name="hibernate.format_sql" value="true" />
<!-- dialeto do banco de dados -->
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<!-- metodo para criacao, atualizacao ou exclusao de tables -->
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<!-- -->
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.cache.region.factory_class"
value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
</properties>
</persistence-unit>
Then create your entities as follows
package br.com.drem.entity;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public class Pessoa {
private String nome;
private String endereco;
private String cep;
private String obs;
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getObs() {
return obs;
}
public void setObs(String obs) {
this.obs = obs;
}
}
@SuppressWarnings("serial")
@Entity
@Table(name = "pessoa_fisica")
public class PessoaFisica extends Pessoa{
/**Campos da entidade*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Long id;
private String cpf;
private String matricula;
private String rg;
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
}
@SuppressWarnings("serial")
@Entity
@Table(name = "pessoa_juridica")
public class PessoaJuridica extends Pessoa {
/**Campos da entidade*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Long id;
private String cnpj;
private String razaoSocial;
private String inscricaoEstadual;
private String matricula;
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public String getRazaoSocial() {
return razaoSocial;
}
public void setRazaoSocial(String razaoSocial) {
this.razaoSocial = razaoSocial;
}
public String getInscricaoEstadual() {
return inscricaoEstadual;
}
public void setInscricaoEstadual(String inscricaoEstadual) {
this.inscricaoEstadual = inscricaoEstadual;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
}
Finally a sample insertion method
public class PFisicaDao {
/**Salvar uma pessoaFisica*/
public void salvar(PessoaFisica pessoaFisica) {
EntityManager em = JPAUtil.getEntityManager();
em.getTransaction().begin();
em.persist(pessoaFisica);
em.getTransaction().commit();
em.close();
}
and finally your test
public class TestePessoaFisica {
public static void main(String[] args) {
PFisicaDao pessoaDao = new PFisicaDao();
PessoaFisica pessoaFisica = new PessoaFisica();
pessoaFisica.setNome("Lulu santos");
pessoaFisica.setEndereco("Copa cabana");
pessoaFisica.setCep("7700000");
pessoaFisica.setCpf("1010101010");
pessoaFisica.setObs("esse cara canta de mais e toca de mais");
pessoaFisica.setMatricula("show");
pessoaFisica.setRg("1010110");
pessoaDao.salvar(pessoaFisica);
}
}
Your database will generate the following tables
pessoaFisica
pessoaJuridica
THIS EXAMPLE WAS USED POSTGRESQL 9
SERVE?