jpahibernate

 

la relazione one to one, è una relazione che si ha con due tabelle. facciamo un esempio.

avremo due tabelle: Login e Utente.

Un utente ha un solo login e un login è riferito ad un solo utente. Questa è una relazione ONE TO ONE. che può essere unidirezionale o bidirezionale.

Analizziamo quella unidirezionale. Per prima cosa, analizziamo il database per per poi costruire la relazione in JPA. Per prima cosa, nella costruzione del database, la relazione one-to-one, si traduce mettendo un ID in una delle due tabelle.

In questo caso, per esempio, decidiamo di mettere l’ID_UTENTE nella tabella Login. la tabella Login diventa proprietario della relazione, perchè ha l’ID_UTENTE. Le due Tabelle su database, diventano:

 

UTENTE ( UTENTE_ID, FIRST_NAME, LAST_NAME, EMAIL);

 

LOGIN ( LOGIN_INFO_ID, UTENTE_ID, LOGIN_NAME, PASSWORD);

 

a questo punto la nostra relazione nelle Entity, si trasforma in questo modo:

 

@Entity
@Table
public class Login
{

….

@OneToOne
@JoinColumn(name=”CUSTOMER_ID”)
private Customer customer;

 

 

}

 

questo perchè, nella tabella del db abbiamo:

LOGIN ( LOGIN_INFO_ID, UTENTE_ID, LOGIN_NAME, PASSWORD);

 

Possiamo a questo punto, se necessario rendere bidirezionale la relazione. Analizziamo la classe che rappresenta UTENTE.

 

@Entity
@Table
public class Utente
{

@OneToOne(mappedBy = “customer”)
private Login login;

 

la relazione inversa, ovvero da UTENTE a LOGIN, si ottiene semplicemente annotando il campo Login con @onetoone, ma, si usa mappedby e si inserisce il nome del campo usato nell’entità LOGIN, in questo caso ho inserito “customer”.

 

 

Annunci