Fala galera
eu estou com um pequeno problema de conceito aqui!
eu tenho duas classes
Pessoa e endereço
e tenho que fazer o relacionamento entre elas no hibernate do tipo one to one
quando eu for implementar as properties nas classes eu devo fazer:
1- Minha classe pessoa vai ter um objeto do tipo endereço e o endereço vai ter um objeto do tipo Pessoa??
2- Ou então a classe pessoa tem um objeto endereço??
3 -ou o endereço temum objeto Pessoa??
Qual é o mais certo??
Quando eu instanciar uma classe Pessoa eu tenho que instanciar uma classe endereço?? e quando eu salvar??
bom eh isso!
desde já eu agradeço!
Olá JotaJota, eu faria Uma pessoa tem um endereço.
public class Pessoa{
private String nome;
private Endereco endereco;
//getters e setters
}
public class Endereco{
private String lograduro;
private String cidade;
//getters e setters
}
Ola Christielencc
vlw pela ajuda kara!
vc tem o mapeamento do hibernate desse codigo (usando o one-to-one)??
se puder me passar eu agradeço
abraços!
Annotations
[code]
@Entity
@Table(name=“pessoas”)
public class Pessoa{
@Id
@GeneratedValue
@Column(name=“id_pessoa”)
private Long id;
private String nome;
@OneToOne
@JoinTable(name=“tb_endereços_das_pessoas”,joinColumns={@JoinColumn(name=“id_pessoa”)})
private Endereco endereco;
//getters e setters
}
@Entity
@Table(name=“endereços”)
public class Endereco{
@Id
private Long id;
private String lograduro;
private String cidade;
//getters e setters
}[/code]
Sabe uma duvida que eu sempre tive???
Qual a diferença desse hibernate aki para o hibernate Anonimation
Hibernate Anonimation ()???
Hibernate :
<hibernate-mapping>
<class name="br.com.cast.escolasys.integracao.VOUsuario" table="usuario">
<id name="login"/>
<property name="senha"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOCurso" table="curso">
<id name="cod_curso"
column="cod_curso"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<property name="descricao"/>
<property name="carga"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOUf" table="uf">
<id name="sigla"/>
<property name="descricao"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOAluno" table="aluno">
<id name="cod_aluno"
column="cod_aluno"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<many-to-one name="cod_municipio"
lazy="false" class="br.com.cast.escolasys.integracao.VOMunicipio"
column="cod_municipio"/>
<property name="cpf"/>
<property name="dt_nascimento"/>
<property name="nacionalidade"/>
<property name="nome"/>
<property name="telefone"/>
<set name="matricula" table="matricula" lazy="false">
<key column="cod_aluno"/>
<many-to-many column="cod_turma"
class="br.com.cast.escolasys.integracao.VOTurma"/>
</set>
</class>
<class name="br.com.cast.escolasys.integracao.VOMunicipio" table="municipio">
<id name="cod_municipio"
column="cod_municipio"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<many-to-one name="sigla_uf"
lazy="false" class="br.com.cast.escolasys.integracao.VOUf"
column="sigla_uf"/>
<property name="descricao"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOTurma" table="turma">
<id name="cod_turma"
column="cod_turma"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<many-to-one name="curso"
lazy="false" class="br.com.cast.escolasys.integracao.VOCurso"
column="curso"/>
<property name="dt_final"/>
<property name="dt_inicio"/>
<property name="hora_final"/>
<property name="hora_inicio"/>
<property name="professor"/>
<set name="matricula" table="matricula" lazy="false">
<key column="cod_turma"/>
<many-to-many column="cod_aluno"
class="br.com.cast.escolasys.integracao.VOAluno"/>
</set>
</class>
</hibernate-mapping>
Hibernate Annotations
@Entity
@Table(name="pessoas")
public class Pessoa{
@Id
@GeneratedValue
@Column(name="id_pessoa")
private Long id;
private String nome;
@OneToOne
@JoinTable(name="tb_endereços_das_pessoas",joinColumns={@JoinColumn(name="id_pessoa")})
private Endereco endereco;
//getters e setters
}
@Entity
@Table(name="endereços")
public class Endereco{
@Id
private Long id;
private String lograduro;
private String cidade;
//getters e setters
}
Eu nunca trabalhei com esse Hibernate Annotations qual o conceito que ele emprega?? onde ele muda? quais as vantagens e diferenças?
Desde já obrigado!
Tipo assim sem esse Annotations você escreve isso
//as Classes.java
public class Pessoa{
private Long id;
private String nome;
private Endereco endereco;
//getters e setters
}
public class Endereco{
private Long id;
private String lograduro;
private String cidade;
//getters e setters
}
// E o Classe.hbm.xml
<hibernate-mapping>
<class name="br.com.cast.escolasys.integracao.VOUsuario" table="usuario">
<id name="login"/>
<property name="senha"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOCurso" table="curso">
<id name="cod_curso"
column="cod_curso"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<property name="descricao"/>
<property name="carga"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOUf" table="uf">
<id name="sigla"/>
<property name="descricao"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOAluno" table="aluno">
<id name="cod_aluno"
column="cod_aluno"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<many-to-one name="cod_municipio"
lazy="false" class="br.com.cast.escolasys.integracao.VOMunicipio"
column="cod_municipio"/>
<property name="cpf"/>
<property name="dt_nascimento"/>
<property name="nacionalidade"/>
<property name="nome"/>
<property name="telefone"/>
<set name="matricula" table="matricula" lazy="false">
<key column="cod_aluno"/>
<many-to-many column="cod_turma"
class="br.com.cast.escolasys.integracao.VOTurma"/>
</set>
</class>
<class name="br.com.cast.escolasys.integracao.VOMunicipio" table="municipio">
<id name="cod_municipio"
column="cod_municipio"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<many-to-one name="sigla_uf"
lazy="false" class="br.com.cast.escolasys.integracao.VOUf"
column="sigla_uf"/>
<property name="descricao"/>
</class>
<class name="br.com.cast.escolasys.integracao.VOTurma" table="turma">
<id name="cod_turma"
column="cod_turma"
type="integer"
unsaved-value="-1">
<generator class="increment">
</generator>
</id>
<many-to-one name="curso"
lazy="false" class="br.com.cast.escolasys.integracao.VOCurso"
column="curso"/>
<property name="dt_final"/>
<property name="dt_inicio"/>
<property name="hora_final"/>
<property name="hora_inicio"/>
<property name="professor"/>
<set name="matricula" table="matricula" lazy="false">
<key column="cod_turma"/>
<many-to-many column="cod_aluno"
class="br.com.cast.escolasys.integracao.VOAluno"/>
</set>
</class>
</hibernate-mapping>
//Agora com Annotations
@Entity
@Table(name="pessoas")
public class Pessoa{
@Id
@GeneratedValue
@Column(name="id_pessoa")
private Long id;
private String nome;
@OneToOne
@JoinTable(name="tb_endereços_das_pessoas",joinColumns={@JoinColumn(name="id_pessoa")})
private Endereco endereco;
//getters e setters
}
@Entity
@Table(name="endereços")
public class Endereco{
@Id
private Long id;
private String lograduro;
private String cidade;
//getters e setters
}
Você mesmo percebeu a diferença
SEM XML
tudo escrito direto na classe
(Java 1.5+)
Além de ser mais simples
Legal
Mas eu tenho mais algumas duvidas
mas eu preciso adicionar algo + pra poder rodar?
alguma biblioteca ou algum jar?
Quando eu salvar a Pessoa eu tenho que jah passar os dados do endereço??
Galera aprendi bastante já mas cada vez que eu aprendo eu tenho vontade de aprender mais!
vlw!
Se quiser usar Annotation, vai precisar configurar seu projeto usando um AnnotationConfigurator.
Os jar do hibernate-annotations.
So se endereço for not-null. Mas isso é você quem define nas regras de negocio.
Perfeito!!!
onde eu consigo o jar do hibernate-annotations.
Se quiser usar Annotation, vai precisar configurar seu projeto usando um AnnotationConfigurator.
Como faço essa configuração? no xml? ou apenas eu adicionando o jar isso jah deixa pronto??
no site oficial do hibernate
acho que é www.hibernate.org
você precisa do Hibernate, HibernateAnnotations e o EntityManager
você NÃO Precisa de XML
e dados para conexão pode ser feito através de um arquivo .properties