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

}

Um comentário:

rodrigogac disse...

Olá bom dia aqui e o rodrigo muito bom a aula faltei a primeira aula mas agora vou acompanhar pelo blog muito boa a ideia. parabéns

Google