Hibernate e Classes

Olá a todos… estou tendo uma duvida creu…
Eu tenho minhas classes onde são herdadas da Classe Pai Pessoa a principio estou fazendo só com três classes que são: Pessoa (Pai), Aluno(filha), Professor(filha) e Curso (filha). O que estou querendo saber, como fazer esse herdando isso no Hibernate, fazendo o relacionamentos One to One, One to Many, etc, etc… Mas sem usar o Annotations?

Atenciosamente,

DIego

Dentro do arquivo xml você define a herança… Dê uma procurada em material no google que tem uns bons exemplos… abraços

Particularmente prefiro trabalhar com annotations… Mas gosto nao se discute… :smiley:

Assim… eu sei q tem como fazer isso pelo Annotations mas quando comecei a usar… ele nao parecia os dados e nem deixava eu inserir e estava usando com o JSF e agora quero mudei pra JSP que é mais facil… pra mim!!

Mas vou dar uma pesquisada… é pesquisar com herança no Hibernate?

Olá amigo! Isso é muito simples de fazer. Estou postando três arquivos, neles tenho pessoa, e pessoa fisica e pessoa juridica que herdam de pesso. Acredito que rsolva o teu problema. Dá um olhada.
Na classe pai isso define ela com pai:

@Inheritance(strategy = InheritanceType.JOINED)

E nos filhos simplesmente
@Entity()
@Table(name = “PESSOA_FISICA”)
public class PessoaFisica extends Pessoa implements Serializable, PessoaOperacoes

Acho que isso resolve!

Boa sorte!

Estava pesquisando essa parte de Herança na Internet aqui e vi que em questão de Herança o pessoal usa muito o Annotations, porém nao achei uma coisa que explica facilmente uma herança no arquivo Xml do Hibernate…

Pois o que vi essa Herança se coloca dentro do Arquivo hibernate.cfg.xml certo?

Mas nao tenho exemplos e explicações claras… alguem pode me informar um local onde tenha…?

Obrigado!

Po cara vlw…
essa anotação que fica em cima da public class, isso nao faz referencia aoa Annotations…?

Dá uma olhada nos arquivos que eu postei que eu uso num sistema que já está funcionando que tu entende.

Vlw… ja estou olhando aki…

Eu achei um cara falando que é bom usar o Middlegen ele é bom pra fazer Heranças, etc…?

aki tá o Link

http://boss.bekk.no/boss/middlegen/

Oi… só para saber…
eu tenho que colocar todo o relacionamento do na Classe PAI?
Parecido com essa classe Pessoa que foi me passado?

/*
*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package gamasouza;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

[code]/**
*

  • @author Jorge
    */
    @Entity()
    @Inheritance(strategy = InheritanceType.JOINED)
    @Table(name = “PESSOA”)
    public class Pessoa implements Serializable {

    @Id
    @Column(name = “ID”)
    @SequenceGenerator(name = “SEQ”, sequenceName = “GEN_PESSOA”, allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “SEQ”)
    private Integer id;
    @Column(name = “NOME”, length = 50, nullable = false)
    private String nome;
    @Column(name = “ENDERECO”, length = 40)
    private String endereco;
    @Column(name = “BAIRRO”, length = 25)
    private String bairro;
    @Column(name = “CEP”, length = 9)
    private String cep;
    @Column(name = “NEWSLETTER”, length = 1)
    private Character newsletter;
    @Column(name = “CLIENTE”, length = 1, nullable = false)
    private Character cliente;
    @Column(name = “FORNECEDOR”, length = 1, nullable = false)
    private Character fornecedor;
    @Column(name = “DATACADASTRO”)
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar dataCadastro;
    @Column(name = “TIPO”, length = 1, nullable = false)
    private Character tipo;
    @ManyToOne
    @JoinColumn(name = “CIDADE”, referencedColumnName = “ID”)
    private Cidade cidade;
    @OneToMany(mappedBy = “pessoa”, cascade = {CascadeType.ALL})
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
    org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
    @LazyCollection(LazyCollectionOption.FALSE)
    private Collection contatosCollection = new ArrayList();

    @OneToMany(mappedBy = “pessoa”, cascade = {CascadeType.ALL})
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
    org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
    @LazyCollection(LazyCollectionOption.FALSE)
    private Collection telefonesCollection = new ArrayList();

    public Pessoa() {
    }

    public Pessoa(Integer id, String nome, Character cliente, Character fornecedor, Character tipo) {
    this.id = id;
    this.nome = nome;
    this.cliente = cliente;
    this.fornecedor = fornecedor;
    this.tipo = tipo;
    }

    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 getEndereco() {
    return endereco;
    }

    public void setEndereco(String endereco) {
    this.endereco = endereco;
    }

    public String getBairro() {
    return bairro;
    }

    public void setBairro(String bairro) {
    this.bairro = bairro;
    }

    public String getCep() {
    return cep;
    }

    public void setCep(String cep) {
    this.cep = cep;
    }

    public Character getNewsletter() {
    return newsletter;
    }

    public void setNewsletter(Character newsletter) {
    this.newsletter = newsletter;
    }

    public Character getCliente() {
    return cliente;
    }

    public void setCliente(Character cliente) {
    this.cliente = cliente;
    }

    public Character getFornecedor() {
    return fornecedor;
    }

    public void setFornecedor(Character fornecedor) {
    this.fornecedor = fornecedor;
    }

    public Calendar getDataCadastro() {
    return dataCadastro;
    }

    public void setDataCadastro(Calendar dataCadastro) {
    this.dataCadastro = dataCadastro;
    }

    public Character getTipo() {
    return tipo;
    }

    public void setTipo(Character tipo) {
    this.tipo = tipo;
    }

    @Override
    public String toString() {
    return getNome();
    }

    public Cidade getCidade() {
    return cidade;
    }

    public void setCidade(Cidade cidade) {
    this.cidade = cidade;
    }

    public Collection getContatosCollection() {
    return contatosCollection;
    }

    public void setContatosCollection(List contatosCollection) {
    this.contatosCollection = contatosCollection;
    }

    public void adicionarContato(ContatosPessoa con) {
    con.setPessoa(this);
    // if (!getContatosCollection().contains(con)) {
    getContatosCollection().add(con);
    // }
    }

    public void removerContato(ContatosPessoa con) {
    if (getContatosCollection().contains(con)) {
    getContatosCollection().remove(con);
    }
    }

    public void removerTodosContatos() {
    getContatosCollection().clear();
    }

    public Iterator getIteratorContatos() {
    return getContatosCollection().iterator();
    }

    public Collection getTelefonesCollection() {
    return telefonesCollection;
    }

    public void setTelefonesCollection(List telefonesCollection) {
    this.telefonesCollection = telefonesCollection;
    }

    public void adicionarTelefone(TelefonesPessoa tel) {
    tel.setPessoa(this);
    if (!getTelefonesCollection().contains(tel)) {
    getTelefonesCollection().add(tel);
    }
    }

    public void removerTelefone(TelefonesPessoa tel) {
    if (getTelefonesCollection().contains(tel)) {
    getTelefonesCollection().remove(tel);
    }
    }

    public void removerTodosTelefones() {
    getTelefonesCollection().clear();
    }

    public Iterator getIteratorTelefones() {
    return getTelefonesCollection().iterator();
    }

    @Override
    public boolean equals(Object obj) {
    if (obj == null) {
    return false;
    }
    if (getClass() != obj.getClass()) {
    return false;
    }
    final Pessoa other = (Pessoa) obj;
    if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
    return false;
    }
    return true;
    }

    @Override
    public int hashCode() {
    int hash = 3;
    hash = 67 * hash + (this.id != null ? this.id.hashCode() : 0);
    return hash;
    }

}[/code]