jpahibernate

 

 

questa volta analizziamo la relazione ONE-TO-MANY.

la relazione ONE-TO-MANY, indica che un record in una tabella, può avere più record in un’altra. facciamo un esempio per capire meglio la situazione.

supponiamo di avere una tabella UTENTI e una tabella chiamata ORDINI. Ogni utente che si registra su AMAZON, avrà uno o più ordini che ha fatto. Diciamo che almeno uno deve essere fatto. Cmq supponiamo che compriamo spesso tanti libri di informatica, allora avremo, per un utente -> tantissimi Ordini pieni di libri di programmazione in JAVA e su JBOSS. di conseguenza si ha una relazione molti a molti.

analizziamo la relazione ONE-TO-MANY, la parte MANY contiene la FK alla parte ONE.

 

dal punto di vista del database, la relazione ONE-TO-MANY sulle due tabelle ORDINI e ITEM si traduce mettendo una chiave esterna nella tabella ITEM, che punta a ORDINI.

 

Quindi avremo:

 

UTENTE( ID_UTENTE, NOME, COGNOME, EMAIL)

 

 

ORDINE(ID_ORDINE, …., ID_UTENTE)

 

come si traduce la relazione ONE-TO-MANY in JPA? si traduce in questo modo. per prima cosa bisogna inserire nell’entity Ordini la relazione @ONE-TO-MANY. si avrà questa situazione:

 

@Entity
@Table
public class Ordini
{

@ManyToOne
@JoinColumn(name = “ID_UTENTE”)
private Utente utente;

}

 

la classe l’annoto con @MANYTOONE, e inserisco anche @JOINCOLUMN. e come valore “ID_UTENTE”, visto che nella tabella è presente la FK alla tabella UTENTE che si chiama ID_UTENTE.

 

posso rendere questa relazione bidirezionale? Ovviamente si.

per fare questo devo mettere nell’entità UTENTE, la relazione @ONETOMANY.

 

@OneToMany(mappedBy=”utente”)
private Set<Ordini> oridini;

 

uso mappedby, per indicare che la relazione è bidirezionale. il valore “utente” è inserito perchè nella classe Ordini ho dato valore utente all’Oggetto.

 

 

Annunci