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


Nenhum comentário:
Postar um comentário