"Que ninguém se engane: só se consegue a simplicidade através de muito trabalho." - Clarice Lispector
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;
}
}
publishedNov 29, 2007 | 0 comments
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;
}
}
publishedNov 26, 2007 | 0 comments
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ã.
publishedNov 23, 2007 | 0 comments
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;
}
}
publishedNov 21, 2007 | 4 comments
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();
}
}
publishedNov 19, 2007 | 1 comment
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.javapackage 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>
publishedNov 19, 2007 | 0 comments
Injetando Interceptador do Hibernate no Spring
O Hibernate tem Interceptadores e Eventos que facilitam a implementação de mecanismos de log. Para integrar com o Spring precisamos realizar os seguintes passos: Primeiro vamos criar o Interceptador:
public class HibernateInterceptor extends EmptyInterceptor {
// Posso ter algum usuario e suas preferencias
private Usuario usuario;
// Posso ter a sessao para realizar alguma operacao
private SessionFactory sessionFactory;
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void onDelete(Object entity
Serializable id
Object[] state
String[] propertyNames
Type[] types) {
registrarLog();
}
public boolean onSave(Object entity
Serializable id
Object[] state
String[] propertyNames
Type[] types) {
registrarLog();
return false;
}
private void registrarLog() {
System.out.println("Registrando LOG.");
}
}
E em seguida configuramos o interceptador no application-context.xml
<!-- Bean para armazenar os dados do usuario logado -->
<bean id="usuario" class="Usuario" scope="session" method="init">
<aop:scoped-proxy>
</aop:scoped-proxy>
<!-- Interceptor do Hibernate -->
<bean id="hibernateInterceptor" class="HibernateInterceptor">
<property name="sessionFactory" ref="sessionFactory">
<property name="usuario" ref="usuario">
</property>
<!-- Configuracao do TransactionManager-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory">
<property name="entityInterceptor" ref="hibernateInterceptor">
</property>
Note que o interceptador criado não será declarado no hibernate.cfg.xml, somente injetado no TransactionManager pela propriedade "entityInterceptor".
publishedOct 10, 2007 | 5682 comments
