25 de nov. de 2007

Curso Hibernate - Aula 04

ROOT   lib     antlr-2.7.6.jar     cglib-nodep-2.1_3.jar     commons-beanutils.jar     commons-collections.jar     commons-dbcp.jar     commons-logging.jar     dom4j-1.6.1.jar     ejb3-persistence.jar     hibernate3.jar     hibernate-annotations.jar     hibernate-commons-annotations.jar     jta.jar     mysql-connector-java-5.0.7-bin.jar   src     hibernate.cfg.xml     entidades       classe         Pessoa.java         PessoaFisica.java         PessoaJuridica.java       simples         Flor.java         Rosa.java         Tulipa.java       subclasse         Caminhao.java         Carro.java         Veiculo.java     servico       FlorServico.java       PessoaServico.java       VeiculoServico.java     util       HibernateUtil.java hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

 <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/hibernateHeranca</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="show_sql">true</property>

        <property name="hbm2ddl.auto">create</property>

  <!-- Tabela por Classe -->
  <mapping class="entidades.classe.PessoaFisica"/>
  <mapping class="entidades.classe.PessoaJuridica"/>

  <!-- Tabela Simples / Tabela por Hierarquia -->
  <mapping class="entidades.simples.Tulipa"/>
  <mapping class="entidades.simples.Rosa"/>
  <mapping class="entidades.simples.Flor"/>

  <!-- Tabela por Subclasse -->
  <mapping class="entidades.subclasse.Veiculo"/>
  <mapping class="entidades.subclasse.Carro"/>
  <mapping class="entidades.subclasse.Caminhao"/>

 </session-factory>

</hibernate-configuration>

Pessoa.java
package entidades.classe;
import java.util.Date;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public class Pessoa {

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Integer id;

 private String nome;

 private Date dataNascimento;

       gets e sets ...
}

PessoaFisica.java
package entidades.classe;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class PessoaFisica extends Pessoa{

 private String cpf;

 public String getCpf() {
  return cpf;
 }

 public void setCpf(String cpf) {
  this.cpf = cpf;
 }
 
}

PessoaJuridica.java
package entidades.classe;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class PessoaJuridica extends Pessoa {

 private String cnpj;

 private String nomeFantasia;

        gets e sets...
}

Flor.java
package entidades.simples;

import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipo_flor", 
  discriminatorType = DiscriminatorType.STRING)
public class Flor {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Integer id;

 private String cor;
 
        gets e sets...
}

Rosa.java
package entidades.simples;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@DiscriminatorValue(value="ROSA")
public class Rosa extends Flor{

 private String tamanhoEspinho;

 public String getTamanhoEspinho() {
  return tamanhoEspinho;
 }

 public void setTamanhoEspinho(String tamanhoEspinho) {
  this.tamanhoEspinho = tamanhoEspinho;
 }
 
}

Tulipa.java
package entidades.simples;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@DiscriminatorValue(value = "TULIPA")
public class Tulipa extends Flor{

}

Caminhao.java
package entidades.subclasse;

import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;

@Entity
@PrimaryKeyJoinColumn(name = "id", referencedColumnName="id")
public class Caminhao extends Veiculo {

 private String tipoCarga;

 private String altura;

        gets e sets...
}

Carro.java
package entidades.subclasse;

import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;

@Entity
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
public class Carro extends Veiculo {

 private String tamanhoPortamalas;

 private String qtdadePortas;

        gets e sets...
}

Veiculo.java
package entidades.subclasse;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Veiculo {

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Integer id;

 private String chassi;

 private String placa;

 private String modelo;
        
        gets e sets...
}

FlorServico.java
package servico;

import org.hibernate.Session;

import util.HibernateUtil;
import entidades.simples.Rosa;
import entidades.simples.Tulipa;

public class FlorServico {

 public static void main(String[] args) {
  FlorServico p = new FlorServico();
  p.criarRosa();
  p.criarTulipa();
 }

 private void criarTulipa() {
  Tulipa f = new Tulipa();
  f.setCor("Branca");
  Session session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
  session.save(f);
  session.getTransaction().commit();

 }

 private void criarRosa() {
  Rosa f = new Rosa();
  f.setTamanhoEspinho("Grandes");
  f.setCor("Vermelha");
  Session session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
  session.save(f);
  session.getTransaction().commit();
 }
 
}

PessoaServico.java
package servico;

import java.util.Date;

import org.hibernate.Session;

import util.HibernateUtil;
import entidades.classe.PessoaFisica;
import entidades.classe.PessoaJuridica;

public class PessoaServico {

 public static void main(String[] args) {
  PessoaServico p = new PessoaServico();
  p.criarPessoaFisica();
  p.criarPessoaJuridica();
 }

 private void criarPessoaJuridica() {
  PessoaJuridica p = new PessoaJuridica();
  p.setCnpj("123465");
  p.setDataNascimento(new Date());
  p.setNome("PJ 01");
  p.setNomeFantasia("PJ Nome Fantasia 01");

  Session session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
  session.save(p);
  session.getTransaction().commit();

 }

 private void criarPessoaFisica() {
  PessoaFisica p = new PessoaFisica();
  p.setCpf("123465");
  p.setDataNascimento(new Date());
  p.setNome("PF 01");

  Session session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
  session.save(p);
  session.getTransaction().commit();
 }

}

VeiculoServico.java
package servico;

import org.hibernate.Session;

import util.HibernateUtil;
import entidades.subclasse.Caminhao;
import entidades.subclasse.Carro;

public class VeiculoServico {

 public static void main(String[] args) {
  VeiculoServico p = new VeiculoServico();
  p.criarCarro();
  p.criarCaminhao();
 }

 private void criarCaminhao() {
  Carro v = new Carro();
  v.setChassi("WQERW131354WER");
  v.setModelo("AUDI");
  v.setPlaca("DHS8938");
  v.setQtdadePortas("5");
  v.setTamanhoPortamalas("30L");
  Session session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
  session.save(v);
  session.getTransaction().commit();

 }

 private void criarCarro() {
  Caminhao v = new Caminhao();
  v.setChassi("AASD987897ASD987");
  v.setModelo("SCANIA");
  v.setPlaca("HTR7848");
  v.setAltura("5m");
  v.setTipoCarga("Animal");
  Session session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
  session.save(v);
  session.getTransaction().commit();
 }

}

HibernateUtil.java
package util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

 private static final SessionFactory sessionFactory;

 static {
  try {
   // Criando a SessionFactory apartir no hibernate.cfg.xml
   sessionFactory = new AnnotationConfiguration().configure()
     .buildSessionFactory();
  } catch (Throwable ex) {
   System.err.println("Não foi possivel criar a SessionFactory." + ex);
   throw new ExceptionInInitializerError(ex);
  }
 }

 public static SessionFactory getSessionFactory() {
  return sessionFactory;
 }

}

Nenhum comentário:

Google