Dúvidas com hibernate

Olá.

Estou utilizando o hibernate a algum tempo, mas até agora só tive que fazer alguns CRUDs. Só que agora, eu preciso inserir dados em algumas tabelas em cascata.

Por exemplo:

Pessoa > Pessoa Física > Endereço

Ao inserir a pessoa, eu preciso levar o id para a tabela pessoa física e inserir também a pessoa física. E no endereço eu preciso do id da pessoa e inserir também os dados do endereço.

Alguém pode me dar uma ajuda em como mapear esse relacionamento no hibernate ?

Obrigado!

kurumajava, boa noite!

Em teoria vc já está no caminho certo. Basta criar classes e fazer o mapeamento propriamente dito. Entre Pessoa e Pessoa Física vc deve tratar herança, enquanto que em Endereco, vc apenas precisa de uma referência ao objeto Pessoa (com Pessoa mesmo e não Pessoa Física, pq uma possível Pessoa Jurídica tem endereços).

Quanto aos mapeamentos em si, sugiro que use os provenientes do pacote javax.persistence. Uma olhada nos exemplos no link http://www.hibernate.org/hib_docs/annotations/reference/en/html/ vai ajudar bastante.

Schmidt

schmidt, obrigado pela resposta.

Estou tentando montar o mapeamento mas não estou conseguindo. O mapeamente da Pessoa está assim:

[code]<?xml version="1.0"?>

<class name="br.model.Pessoa" table="pessoas">
    
	<id name="oidPessoa" column="id_pessoa" type="int">
		<generator class="sequence">
			<param name="sequence">sqc_pessoas</param>
		</generator>
	</id>

</class>

[/code]

E o Pessoa Jurídica:

[code]<?xml version="1.0"?>

<class name="br.model.PessoaJuridica" table="pessoas_juridicas">
    
	<id name="oidPesJuridica" column="id_pes_jurid" type="int">
		<generator class="sequence">
			<param name="sequence">sqc_pessoas_juridicas</param>
		</generator>
	</id>
   
    <property name="cnpj"/>
    <property name="rzSocial"/>
    <property name="nmFantasia"/>
    <property name="inscEstadual"/>
    <property name="inscMunicipal"/>
    <property name="homePage"/>
    
	<many-to-one name="pessoa" class="br.model.Pessoa" column="id_pessoa"/>

</class>

[/code]

Esse mapeamento está correto ?

Obrigado!

Bom dia,

Pra ser sincero, não uso mapeamento via arquivo xml, defendo a idéia de olhar para minhas classes e conseguir analisar seus mapeamentos, assim, os coloco antes da declaração dos atributos na própria classe de modelo.

Mas enfim, no seu caso, não está funcionando pq vc está fazendo um relacionamento de muitos pra um com pessoa. ManyToOne e OneToMany vc apenas utiliza entre Pessoa e Endereço (uma referência do objeto Pessoa vai ficar em Endereco). Entre Pessoa  e Pes. Física e Jurídica existe herança, sendo a annotation diferente para tanto: procure pela propriedade "PrimaryKeyJoinColumn(name="coluna_chave")" equivalente para mapeamento em xml. No mapeamento direto na classe, eu utilizo essa annotation.

 ps: pode me xingar de chato  :D ... mas outra dica, convenciona-se usar tabelas no banco de dados sempre no singular.

Schmidt