29 de nov. de 2007

Hibernate - Exemplo com Herança

> Faça uma classe de serviço que persista, recupere e atualize dados de pessoas para um escritório de advocacia. O escritório é composto por clientes, advogados e funcionários diversos. > Toda pessoa possue nome, cpf, telefone e endereço > Clientes possuem registros de atendimentos > Funcionários possuem número da carteira de trabalho, e registros de horário > Advogados possuem número da OAB e horários de atendimento 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/hibernateAdvocacia</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="format_sql">true</property>

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

  <mapping class="entidade.Advogado"/>
  <mapping class="entidade.Atendimento"/>
  <mapping class="entidade.Cliente"/>
  <mapping class="entidade.Funcionario"/>
  <mapping class="entidade.Horario"/>
  <mapping class="entidade.HorarioAdvogado"/>
  <mapping class="entidade.Pessoa"/>

 </session-factory>

</hibernate-configuration>

entidade.Pessoa.java
package entidade;

import java.io.Serializable;

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 Pessoa implements Serializable{
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 private Integer id;
 
 private String nome;
 
 private String cpf;
 
 private String rg;
 
 private String telefone;
 
 private String endereco;

       // gets e sets

}

entidade.Advogado.java
package entidade;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.PrimaryKeyJoinColumn;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@PrimaryKeyJoinColumn(name = "advogado_id", referencedColumnName = "id")
public class Advogado extends Pessoa implements Serializable {

 private Integer nroOab;

 @OneToMany(mappedBy = "advogado",fetch=FetchType.EAGER)
 @Cascade(CascadeType.ALL)
 private List horarios;
        
        // gets e sets

}

entidade.HorarioAdvogado.java Observe que em @JoinColumn(name="advogado_id") não foi referenciado o campo "id" de pessoa e sim o campo "advogado_id", por isso está suprimido o atributo "referencedColumnName". Isso vale para as outras classes que tem relacionamento @ManyToOne()
package entidade;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class HorarioAdvogado {

 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 private Integer id;
 
 @Temporal(TemporalType.TIMESTAMP)
 private Date horario;
 
 @ManyToOne()
 @JoinColumn(name="advogado_id")
 private Advogado advogado;

        //gets e sets
}

entidade.Funcionario.java
package entidade;

import java.math.BigDecimal;
import java.util.List;

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

@Entity
@PrimaryKeyJoinColumn(name = "funcionario_id", referencedColumnName = "id")
public class Funcionario extends Pessoa {

 private String carteiraTrabalho;

 private BigDecimal salario;
 
 @OneToMany(mappedBy="funcionario")
 private List horarios;

        // gets e sets
}

entidade.Horario.java
package entidade;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Horario {

 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 private Integer id;
 
 @Temporal(TemporalType.TIMESTAMP)
 private Date hora;
 
 @ManyToOne()
 @JoinColumn(name="funcionario_id")
 private Funcionario funcionario;
     
        //gets e sets
}

entidade.Cliente.java
package entidade;

import java.util.List;

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

@Entity
@PrimaryKeyJoinColumn(name = "cliente_id", referencedColumnName = "id")
public class Cliente extends Pessoa {

 @OneToMany(mappedBy = "cliente")
 private List atendimentos;
    
        //gets e sets
}

entidade.Atendimento.java
package entidade;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Atendimento {

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

 @Temporal(TemporalType.TIMESTAMP)
 private Date dia;

 private String descricao;

 @ManyToOne()
 @JoinColumn(name = "cliente_id")
 private Cliente cliente;

        //gets e sets
}

servico.PessoaServico.java
package servico;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;

import util.HibernateUtil;
import entidade.Advogado;
import entidade.HorarioAdvogado;

public class PessoaServico {

 public static void main(String[] args) {
  PessoaServico p = new PessoaServico();
  // p.criarAdvogado();
  p.listarAdvogados();
 }

 private void listarAdvogados() {
  Session s = HibernateUtil.getSessionFactory().openSession();
  s.beginTransaction();

  Criteria c = s.createCriteria(Advogado.class);
  List advogados = c.list();
  
  for (Advogado a : advogados) {
   System.out.println(a.getNome());
   System.out.println(a.getNroOab());
   System.out.println(a.getHorarios().get(0));
  }

  s.getTransaction().commit();
  s.close();
 }

 private void criarAdvogado() {
  Advogado a = new Advogado();
  a.setCpf("123456");
  a.setEndereco("endereco");
  a.setNome("Advogado 3");
  a.setNroOab(789);
  a.setRg("783545");
  a.setTelefone("789456");

  HorarioAdvogado h = new HorarioAdvogado();
  h.setAdvogado(a);
  h.setHorario(new Date());

  a.setHorarios(new ArrayList());
  a.getHorarios().add(h);

  Session s = HibernateUtil.getSessionFactory().openSession();

  s.beginTransaction();
  s.save(a);
  s.getTransaction().commit();
  s.close();
 }

}

util.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;
 }

}

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;
 }

}

23 de nov. de 2007

Curso Hibernate - Desafio para um fim de semana feliz

Problema: Existem vários evento e pessoas. Cada pessoa pode participar de vários eventos e a mesma pode ter vários emails. 1. Realize o mapeamentos. 2. Crie uma classe de servico para cadastrar pessoas com seus emails 3. Crie uma classe de servico para evento onde você pode cadastrar eventos e também as pessoas que serao participantes. Segue abaixo o esquema para entender melhor: Obs: Coloco o resultado na segunda pela manhã.

21 de nov. de 2007

Curso Hibernate - Aula 03

Ainda hoje coloco um desafio para ser feito até na Segunda-Feira (26/11/07) Bibliotecas utilizadas: antlr-2.7.6 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 Fontes do hibernateQuerie: ROOT - lib   - libs - src   - hibernate.cfg.xml   - entidade     - Aluno.java     - Curso.java   - servico     - AlunoServico.java     - CursoServico.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/hibernateQuerie</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="format_sql">true</property>

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

  <mapping class="entidade.Aluno"/>
  <mapping class="entidade.Biblioteca"/>
  <mapping class="entidade.Curso"/>
  <mapping class="entidade.Endereco"/>
  <mapping class="entidade.Livro"/>
  <mapping class="entidade.Telefone"/>

 </session-factory>

</hibernate-configuration>

Aluno.java
package entidade;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Aluno {

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

 private String nome;

 private Integer idade;

 @Temporal(TemporalType.DATE)
 private Date nascimento;

 @ManyToOne(fetch=FetchType.LAZY)
 @JoinColumn(name = "curso_id", referencedColumnName = "id")
 private Curso curso;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getNome() {
  return nome;
 }

 public void setNome(String nome) {
  this.nome = nome;
 }

 public Curso getCurso() {
  return curso;
 }

 public void setCurso(Curso curso) {
  this.curso = curso;
 }

 public Integer getIdade() {
  return idade;
 }

 public void setIdade(Integer idade) {
  this.idade = idade;
 }

 public Date getNascimento() {
  return nascimento;
 }

 public void setNascimento(Date nascimento) {
  this.nascimento = nascimento;
 }

 @Override
 public String toString() {
  return "Aluno["+id+"]: "+ nome;
 }

}

Curso.java
package entidade;
import java.util.Collection;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
public class Curso {

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

 private String descricao;

 private Integer duracao;

 @OneToMany(mappedBy = "curso")
 @Cascade(CascadeType.ALL)
 private Collection alunos;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getDescricao() {
  return descricao;
 }

 public void setDescricao(String descricao) {
  this.descricao = descricao;
 }

 public Collection getAlunos() {
  return alunos;
 }

 public void setAlunos(Collection alunos) {
  this.alunos = alunos;
 }

 public Integer getDuracao() {
  return duracao;
 }

 public void setDuracao(Integer duracao) {
  this.duracao = duracao;
 }
 
 public String toString(){
  return "Curso["+id+"]: "+descricao;
 }

}

Biblioteca.java
package entidade;

import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="biblioteca")
public class Biblioteca {
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO) 
 private Integer id;
 
 @Column(name="nome", length=50)
 private String nome;
 
 @Column(name="cnpj", length=14)
 private String cnpj;
 
 @OneToOne(mappedBy="biblioteca")
 @Cascade(CascadeType.ALL)
 private Endereco endereco;
 
 @OneToMany(mappedBy="biblioteca")
 @Cascade(CascadeType.ALL)
 private Collection livros;

 @OneToMany(mappedBy="")
 @Cascade(CascadeType.ALL)
 private Collection telefone;
 
 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getNome() {
  return nome;
 }

 public void setNome(String nome) {
  this.nome = nome;
 }

 public String getCnpj() {
  return cnpj;
 }

 public void setCnpj(String cnpj) {
  this.cnpj = cnpj;
 }

 public Endereco getEndereco() {
  return endereco;
 }

 public void setEndereco(Endereco endereco) {
  this.endereco = endereco;
 }

 public Collection getLivros() {
  return livros;
 }

 public void setLivros(Collection livros) {
  this.livros = livros;
 }

 public Collection getTelefone() {
  return telefone;
 }

 public void setTelefone(Collection telefone) {
  this.telefone = telefone;
 }
}

Endereco.java
package entidade;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="endereco")
public class Endereco {
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 private Integer idEndereco;
 
 @Column(name="rua")
 private String rua;
 
 @Column(name="nro")
 private String nro;
 
 @OneToOne()
 @JoinColumn(name="biblioteca_id", referencedColumnName="id")
 private Biblioteca biblioteca;

 public Integer getIdEndereco() {
  return idEndereco;
 }

 public void setIdEndereco(Integer idEndereco) {
  this.idEndereco = idEndereco;
 }

 public String getRua() {
  return rua;
 }

 public void setRua(String rua) {
  this.rua = rua;
 }

 public String getNro() {
  return nro;
 }

 public void setNro(String nro) {
  this.nro = nro;
 }

 public Biblioteca getBiblioteca() {
  return biblioteca;
 }

 public void setBiblioteca(Biblioteca biblioteca) {
  this.biblioteca = biblioteca;
 } 
}

Telefone.java
package entidade;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="telefone")
public class Telefone {
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name="id_telefone")
 private Integer idTelefone;
 
 @Column(name="ddd", length = 3)
 private Integer ddd;
 
 @Column(name="nroTelefone", length = 8)
 private Integer nroTelefone;
 
 @ManyToOne()
 @JoinColumn(name="biblioteca_id", referencedColumnName="id")
 private Biblioteca biblioteca;

 public Integer getIdTelefone() {
  return idTelefone;
 }

 public void setIdTelefone(Integer idTelefone) {
  this.idTelefone = idTelefone;
 }

 public Integer getDdd() {
  return ddd;
 }

 public void setDdd(Integer ddd) {
  this.ddd = ddd;
 }

 public Integer getNroTelefone() {
  return nroTelefone;
 }

 public void setNroTelefone(Integer nroTelefone) {
  this.nroTelefone = nroTelefone;
 }

 public Biblioteca getBiblioteca() {
  return biblioteca;
 }

 public void setBiblioteca(Biblioteca biblioteca) {
  this.biblioteca = biblioteca;
 } 
}

Livro.java
package entidade;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="livro")
public class Livro {
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 private Integer id;
 
 @Column(name="titulo")
 private String titulo;
 
 @Column(name="autor") 
 private String autor;
 
 @Column(name="isbn")
 private Integer isbn;
 
 @ManyToOne()
 @JoinColumn(name="biblioteca_id", referencedColumnName="id")
 private Biblioteca biblioteca;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getTitulo() {
  return titulo;
 }

 public void setTitulo(String titulo) {
  this.titulo = titulo;
 }

 public String getAutor() {
  return autor;
 }

 public void setAutor(String autor) {
  this.autor = autor;
 }

 public Integer getIsbn() {
  return isbn;
 }

 public void setIsbn(Integer isbn) {
  this.isbn = isbn;
 }

 public Biblioteca getBiblioteca() {
  return biblioteca;
 }

 public void setBiblioteca(Biblioteca biblioteca) {
  this.biblioteca = biblioteca;
 }
}

AlunoServico.java
package servico;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import util.HibernateUtil;
import entidade.Aluno;
import entidade.Curso;

public class AlunoServico {

 private Session session;

 public static void main(String[] args) {
  AlunoServico servico = new AlunoServico();
  servico.criar();
  servico.consultas();
 }

 private void consultas() {
  iniciandoSessao();
  Criteria c = session.createCriteria(Curso.class);

  for (Curso elem : (List) c.list()) {
   System.out.println(elem);
  }

  c = session.createCriteria(Aluno.class);
  c.add(Restrictions.like("nome", "Tia%"));
  c.add(Restrictions.between("idade", 10, 34));
  for (Aluno elem : (List) c.list()) {
   System.out.println(elem);
  }

  c = session.createCriteria(Aluno.class);
  c.add(Restrictions.like("nome", "Fla%"));
  c.add(
    Restrictions.or(
      Restrictions.eq("idade", 31), 
      Restrictions.isNull("idade")
    )
   );
  for (Aluno elem : (List) c.list()) {
   System.out.println(elem);
  }

  c = session.createCriteria(Aluno.class);
  c.add(
    Restrictions.in("nome", new String[] { "Tiago Ramos", "Flavia" })
   );
  c.add(
    Restrictions.disjunction()
     .add(Restrictions.isNull("idade"))
     .add(Restrictions.eq("idade", 30))
     .add(Restrictions.eq("idade", 31))
    .add(Restrictions.eq("idade", 34))
   );
  for (Aluno elem : (List) c.list()) {
   System.out.println(elem);
  }

  c = session.createCriteria(Aluno.class);
  c.add(Restrictions.like("nome", "F%"));
  c.addOrder(Order.asc("nome"));
  c.addOrder(Order.desc("idade"));
  c.setMaxResults(50);
  for (Aluno elem : (List) c.list()) {
   System.out.println(elem);
  }

 }

 private void criar() {

  Aluno a1 = new Aluno();
  a1.setIdade(34);
  a1.setNascimento(new Date());
  a1.setNome("Tiago Ramos");

  Aluno a2 = new Aluno();
  a2.setIdade(31);
  a2.setNascimento(new Date());
  a2.setNome("Flavia Nunes");

  List alunos = new ArrayList();
  alunos.add(a1);
  alunos.add(a2);

  Curso c = new Curso();
  c.setDescricao("Curso 01");
  c.setDuracao(3);
  c.setAlunos(alunos);

  a1.setCurso(c);
  a2.setCurso(c);

  iniciandoSessao();
  session.save(c);
  session.getTransaction().commit();

 }

 private void iniciandoSessao() {
  session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
 }
}

CursoServico.java
package servico;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.hibernate.Session;

import util.HibernateUtil;
import entidade.Aluno;
import entidade.Curso;

public class CursoServico {

 private Session session;

 public static void main(String[] args) {

  CursoServico servico = new CursoServico();
  servico.criar();
  servico.consultas();
 }

 private void consultas() {
  iniciandoSessao();
  List alunos = session.createQuery("from Aluno where idade >  ?")
    .setInteger(0, 15)
    .list();

  for (Aluno elem : alunos) {
   System.out.println(elem);
  }
  
  alunos = session.createQuery("from Aluno where nome =  ? order by nome")
  .setString(0, "Flavia Nunes")
    .list();

  for (Aluno elem : alunos) {
   System.out.println(elem);
  }
  
  Aluno aluno = (Aluno) session.createQuery("from Aluno as a where a = ?")
    .setEntity(0, alunos.get(0))
    .uniqueResult();
  System.out.println(aluno);
 }

 private void criar() {

  Aluno a1 = new Aluno();
  a1.setIdade(34);
  a1.setNascimento(new Date());
  a1.setNome("Tiago Ramos");

  Aluno a2 = new Aluno();
  a2.setIdade(31);
  a2.setNascimento(new Date());
  a2.setNome("Flavia Nunes");

  List alunos = new ArrayList();
  alunos.add(a1);
  alunos.add(a2);

  Curso c = new Curso();
  c.setDescricao("Curso 01");
  c.setDuracao(3);
  c.setAlunos(alunos);

  a1.setCurso(c);
  a2.setCurso(c);

  iniciandoSessao();
  session.save(c);
  session.getTransaction().commit();

 }

 private void iniciandoSessao() {
  session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
 }
}

BibliotecaServico.java
package servico;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import util.HibernateUtil;
import entidade.Biblioteca;
import entidade.Endereco;
import entidade.Livro;
import entidade.Telefone;

public class BibliotecaServico {
 
 public static void main(String[] args) {
  
  BibliotecaServico servico = new BibliotecaServico();  
  servico.criar();
  servico.cadastrarLivros();  
  servico.listar();
 }

 private void listar() {
  Session s = HibernateUtil.getSessionFactory().openSession();
  s.beginTransaction();
  
  Criteria c = s.createCriteria(Livro.class);
  c.addOrder(Order.asc("titulo"));
  
  for(Livro elem : (List) c.list()){
   System.out.println(elem.getTitulo());
  }
  
  s.getTransaction().commit();
 }

 private void cadastrarLivros() {
  Session s = HibernateUtil.getSessionFactory().openSession();
  s.beginTransaction();
  
  // Consulta da biblioteca
  Criteria c = s.createCriteria(Biblioteca.class);
  c.add(Restrictions.eq("nome", "Biblioteca do Renan"));
  
  // Recupera a biblioteca
  Biblioteca b = (Biblioteca) c.uniqueResult();
  
  Livro livro1 =  new Livro();
  livro1.setAutor("Autor 1");
  livro1.setIsbn(123456);
  livro1.setTitulo("titulo 1");
  livro1.setBiblioteca(b);
  
  Livro livro2 =  new Livro();
  livro2.setAutor("Autor 2");
  livro2.setIsbn(123456);
  livro2.setTitulo("titulo 2");
  livro2.setBiblioteca(b);
  
  // Adicionando livros na coleção
  ArrayList livros = new ArrayList();
  livros.add(livro1);
  livros.add(livro2);
  
  b.setLivros(livros);
  
  s.save(b);
  s.getTransaction().commit();
  
 }

 private void criar() {
  
  Session s = HibernateUtil.getSessionFactory().openSession();
  s.beginTransaction();
  
  Endereco e = new Endereco();
  e.setNro("123");
  e.setRua("Minha Rua");
  
  Telefone t = new Telefone();
  t.setDdd(061);
  t.setNroTelefone(35979898);
  
  Biblioteca b = new Biblioteca();
  b.setCnpj("123456");
  b.setNome("Biblioteca Renan");
  
  b.setEndereco(e);
  
  b.setTelefone(new ArrayList());
  b.getTelefone().add(t);
  
  e.setBiblioteca(b);
  
  s.save(b);  
  s.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;
 }

}

19 de nov. de 2007

Curso Hibernate - Aula 02

Bibliotecas utilizadas: 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 Fontes Ciclo de Vida: ROOT  - lib   - libs  - src   - Usuario.java   - UsuarioServico.java   - HibernateUtil.java   - hibernate.cfg.xml HibernateUtil.java
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;
 }

}

Usuario.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Usuario {

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

 private String login;

 private String senha;

 private String nome;

 private String email;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getLogin() {
  return login;
 }

 public void setLogin(String login) {
  this.login = login;
 }

 public String getSenha() {
  return senha;
 }

 public void setSenha(String senha) {
  this.senha = senha;
 }

 public String getNome() {
  return nome;
 }

 public void setNome(String nome) {
  this.nome = nome;
 }

 public String getEmail() {
  return email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

 @Override
 public String toString() {
  return "Usuario["+this.getId()+"]: Nome "+this.getNome();
 }
}

UsuarioSevico.java
import org.hibernate.Session;

public class UsuarioServico {

 private Session session;

 public static void main(String[] args) {

  UsuarioServico servico = new UsuarioServico();

  System.out.println("----------------------------");
  System.out.println("Criar um objeto Persistente");
  System.out.println("----------------------------");
  servico.criar();
  System.out.println("----------------------------");
  System.out.println("Obter objeto Persistente");
  System.out.println("----------------------------");
  servico.obter();
  System.out.println("----------------------------");
  System.out.println("Atualizar objeto persistente");
  System.out.println("----------------------------");
  servico.atualizar();
  System.out.println("----------------------------");
  System.out.println("Tornar transisnte um objeto persistente");
  System.out.println("----------------------------");
  servico.tornarTransiente();
 }

 private void criar() {
  // Objeto transiente
  Usuario u = new Usuario();
  u.setEmail("email");
  u.setLogin("login");
  u.setNome("nome");
  u.setSenha("senha");

  iniciandoSessao();

  // Objeto sendo persistido
  session.save(u);
  // Objeto persistido

  session.getTransaction().commit();
  // Objeto transiente
 }

 private void obter() {
  iniciandoSessao();

  // Objeto transiente
  Usuario u = (Usuario) session.load(Usuario.class, 1);
  // Objeto persistente
  System.out.println("Usuario " + u.toString());

  session.getTransaction().commit();
  // Objeto transiente
 }

 private void atualizar() {
  iniciandoSessao();

  // Objeto transiente
  Usuario u = (Usuario) session.get(Usuario.class, 2);
  // Objeto persistente
  System.out.println("Usuario " + u.toString());
  u.setNome("novo nome");

  session.getTransaction().commit();
  // Objeto transiente
 }

 private void tornarTransiente() {
  iniciandoSessao();

  // Objeto transiente
  Usuario u = (Usuario) session.get(Usuario.class, 3);
  // Objeto persistente
  if (u != null) {
   System.out.println("Usuario " + u.toString());
   session.delete(u);
  }

  session.getTransaction().commit();
  // Objeto transiente
 }

 private void iniciandoSessao() {
  session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
 }

}

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/hibernateCicloDeVida</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">update</property>

  <mapping class="Usuario"/>

 </session-factory>

</hibernate-configuration>

Fontes Associações: ROOT  - lib   - libs  - src   - hibernate.cfg.xml   - entidade     - Endereco.java     - Usuario.java     - Veiculo.java   - servico     - UsuarioServico.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/hibernateCicloDeVida</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">update</property>

  <mapping class="entidade.Usuario"/>
  <mapping class="entidade.Endereco"/>
  <mapping class="entidade.Veiculo"/>

 </session-factory>

</hibernate-configuration>

Entidades: Usuario.java
package entidade;

import java.util.List;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
public class Usuario {

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

 private String login;

 private String senha;

 private String nome;

 private String email;

 @OneToMany(mappedBy = "usuario")
 @Cascade(CascadeType.ALL)
 private Set enderecos;

 @ManyToMany(fetch = FetchType.LAZY)
 @JoinTable(name = "aluguel", joinColumns = { @JoinColumn(name = "usuario_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "veiculo_id", referencedColumnName = "id") })
 private List veiculos;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getLogin() {
  return login;
 }

 public void setLogin(String login) {
  this.login = login;
 }

 public String getSenha() {
  return senha;
 }

 public void setSenha(String senha) {
  this.senha = senha;
 }

 public String getNome() {
  return nome;
 }

 public void setNome(String nome) {
  this.nome = nome;
 }

 public String getEmail() {
  return email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

 @Override
 public String toString() {
  return "Usuario[" + this.getId() + "]: Nome " + this.getNome();
 }

 public Set getEnderecos() {
  return enderecos;
 }

 public void setEnderecos(Set enderecos) {
  this.enderecos = enderecos;
 }

 public List getVeiculos() {
  return veiculos;
 }

 public void setVeiculos(List veiculos) {
  this.veiculos = veiculos;
 }

}

Endereco.java
package entidade;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Endereco {

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

 private String rua;

 private Integer numero;

 private String bairro;

 private String cidade;

 private String uf;

 private String cep;

 @ManyToOne()
 @JoinColumn(name = "usuario_id", referencedColumnName = "id", insertable = true, updatable = true)
 private Usuario usuario;

 public Usuario getUsuario() {
  return usuario;
 }

 public void setUsuario(Usuario usuario) {
  this.usuario = usuario;
 }

 public String getRua() {
  return rua;
 }

 public void setRua(String rua) {
  this.rua = rua;
 }

 public Integer getNumero() {
  return numero;
 }

 public void setNumero(Integer numero) {
  this.numero = numero;
 }

 public String getBairro() {
  return bairro;
 }

 public void setBairro(String bairro) {
  this.bairro = bairro;
 }

 public String getCidade() {
  return cidade;
 }

 public void setCidade(String cidade) {
  this.cidade = cidade;
 }

 public String getUf() {
  return uf;
 }

 public void setUf(String uf) {
  this.uf = uf;
 }

 public String getCep() {
  return cep;
 }

 public void setCep(String cep) {
  this.cep = cep;
 }

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

}

Veiculo.java
package entidade;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

@Entity
public class Veiculo {

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

 @Column()
 private String modelo;

 @Column()
 private String cor;

 @Column()
 private Integer ano;

 @ManyToMany(fetch = FetchType.LAZY)
 @JoinTable(name = "aluguel", joinColumns = { @JoinColumn(name = "veiculo_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "usuario_id", referencedColumnName = "id") })
 private List usuarios;

 public List getUsuarios() {
  return usuarios;
 }

 public void setUsuarios(List usuarios) {
  this.usuarios = usuarios;
 }

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getModelo() {
  return modelo;
 }

 public void setModelo(String modelo) {
  this.modelo = modelo;
 }

 public String getCor() {
  return cor;
 }

 public void setCor(String cor) {
  this.cor = cor;
 }

 public Integer getAno() {
  return ano;
 }

 public void setAno(Integer ano) {
  this.ano = ano;
 }

}

Servico: UsuarioServico.java
package servico;
import java.util.HashSet;

import org.hibernate.Session;

import util.HibernateUtil;
import entidade.Endereco;
import entidade.Usuario;

public class UsuarioServico {

 private Session session;

 public static void main(String[] args) {

  UsuarioServico servico = new UsuarioServico();

  System.out.println("-------------------------------");
  System.out.println("Criar um usuario e seu endereco");
  System.out.println("-------------------------------");
  servico.criar();
 }

 private void criar() {
  
  Usuario u1 = new Usuario();
  u1.setEmail("email");
  u1.setLogin("login");
  u1.setNome("nome");
  u1.setSenha("senha");
  u1.setEnderecos(new HashSet());
  
  Endereco e1 = new Endereco();
  e1.setBairro("bairro");
  e1.setCep("cep");
  e1.setCidade("cidade");
  e1.setNumero(123);
  e1.setRua("rua");
  e1.setUf("uf");
  e1.setUsuario(u1);

  u1.getEnderecos().add(e1);
  
  Usuario u2 = new Usuario();
  u2.setEmail("email");
  u2.setLogin("login");
  u2.setNome("nome");
  u2.setSenha("senha");
  u2.setEnderecos(new HashSet());
  
  Endereco e2 = new Endereco();
  e2.setBairro("bairro");
  e2.setCep("cep");
  e2.setCidade("cidade");
  e2.setNumero(123);
  e2.setRua("rua");
  e2.setUf("uf");
  e2.setUsuario(u2);

  u2.getEnderecos().add(e2);
  
  
  iniciandoSessao();

  session.save(u1);
  session.save(u2);
  session.getTransaction().commit();
 }

 private void iniciandoSessao() {
  session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
 }

}

VeiculoServico.java
package servico;

import org.hibernate.Session;

import util.HibernateUtil;
import entidade.Veiculo;

public class VeiculoServico {

 private Session session;

 public static void main(String[] args) {

  VeiculoServico servico = new VeiculoServico();

  System.out.println("-------------------------------");
  System.out.println("Criar um veiculo");
  System.out.println("-------------------------------");
  servico.criar();
 }

 private void criar() {

  Veiculo v1 = new Veiculo();
  v1.setAno(2005);
  v1.setCor("cor 1");
  v1.setModelo("modelo 1");

  Veiculo v2 = new Veiculo();
  v2.setAno(2007);
  v2.setCor("cor 2");
  v2.setModelo("modelo 2");

  iniciandoSessao();

  session.save(v1);
  session.save(v2);
  session.getTransaction().commit();
 }

 private void iniciandoSessao() {
  session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
 }

}

Curso Hibernate - Aula 01

Bibliotecas: 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 Fontes: Veiculo.java
package primeiroexemplo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

//Informa que a classe é um objeto persistente
@Entity
// Informa o nome da tabela
@Table(name="veiculos")
public class Veiculo {

 // Informa a chave primaria
 @Id
 // Informa o mecanismo de chave primária
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Integer id;

 // Informa que temos uma coluna
 @Column()
 private String modelo;

 @Column()
 private String cor;

 @Column()
 private Integer ano;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getModelo() {
  return modelo;
 }

 public void setModelo(String modelo) {
  this.modelo = modelo;
 }

 public String getCor() {
  return cor;
 }

 public void setCor(String cor) {
  this.cor = cor;
 }

 public Integer getAno() {
  return ano;
 }

 public void setAno(Integer ano) {
  this.ano = ano;
 }

}
Executando.java
package primeiroexemplo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;


public class Executando {

 public static void main(String str[]){

  // Configuration é o objeto que recebe as configuracoes
  Configuration c = new AnnotationConfiguration();

  // Criamos uma fabrica de sessoes
  SessionFactory f = c.configure().buildSessionFactory();

  // Iniciamos uma sessao
  Session s = f.openSession();

  // Iniciamos uma transação
  Transaction t = s.beginTransaction();

  // Criamos um objeto que ainda nao foi persistido
  Veiculo v = new Veiculo();
  v.setAno(2000);
  v.setCor("Amarela");
  v.setModelo("Fuscao");

  // Persite o objeto
  s.save(v);

  // Encerra a transacao
  t.commit();

  // Fecha a sessao
  s.close();
 }
}

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/hibernate_primeiro_exemplo</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">update</property>

  <mapping class="primeiroexemplo.Veiculo"/>

 </session-factory>

</hibernate-configuration>
Google