Hibernate - Obj Tipo Entidade e Tipo de Valor

Ola

Estou com uma dúvida sobre objeto de tipo entidade e tipo de valor…
objeto de tipo entidade seria aquele que possui uma tabela no bd? por ex: Tabela Usuario
e objeto tipo de valor seria apenas um “campo” da tabela Usuario? Porém eu trabalhe com um objeto para esse campo ? por ex: Endereço

Estou certo?

abraco

Exemplo:
Cliente TEM UM endereço.

Dependendo da tua aplicação você define se objeto endereço vai ter um ciclo de vida dependente ou não de Cliente.

-Caso endereço exista independentemente de Cliente, ele é uma Entidade
-Caso endereço seja dependente de Cliente(só tenho acesso a um endereço através de um Cliente), ele pode ser mapeado como um tipo de valor.

Diferença conceitual:

-> Um objeto tipo de valor não tem identidade no banco de dados, ele pertence a uma instância de entidade. Um objeto tipo de valor no seu estado persistente é colocado na mesma linha da tabela da entidade dona.

-> Um objeto entidade tem sua própria identidade no banco de dados (chave primária), isso quer dizer que ela tem seu próprio ciclo de vida(ela existe independentemente de qualquer outra entidade).

a parte de objeto tipo entidade ficou claro… mas tipo de valor ainda não…

por ex:
tabela cliente

  • id(pk)
  • nome

tabela endereco

  • id (pk)
  • idCliente (fk)
  • rua
    nesse exemplo a tabela endereco depende da tab cliente…para cada endereco tem um cliente, mas para cada cliente pode ter
    vários enderecos…
    nesse caso o Objeto Endereco seria um tipo de valor, certo?
    essa frase “só tenho acesso a um endereço através de um Cliente” quer dizer que não tem como eu “descobrir”, ou consultar o
    cliente atravez do endereco? pode me explicar melhor?

valeu

alguém?

errado.
Você ta fazendo um pouco de confusão, nesse caso você esta criando um relacionamento entre duas entidades “One-To-Many” onde tanto o objeto Cliente quanto Endereco são entidades.

-Endereço seria um tipo de valor se ele fosse persistido junto a tabela de Clientes.
Isso quer dizer que Cliente e Endereço ficarão em uma mesma tabela.

-Endereço não teria uma chave primaria.

Cliente é a entidade responsável (aquela que contém uma chave primaria no banco de dados) enquanto endereço somente existe porque um Cliente tem aquele endereço.

a tabela ficaria assim:
Tabela cliente

  • id(pk)
  • nome
    -rua
    -numero
    -bairro
    -cidade

blz Rodrigo…
agora ficou bem claro…
valeu