<!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 Listhorarios; // 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 Listhorarios; // 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 Listatendimentos; //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); Listadvogados = 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