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