JPA Flashcards

1
Q

Notazione @Basic cosa significa?

A

@Basic diciamo che si tratta di una colonna di un database se poi desideriamo specificare se obbligatorio @Basic(optional=false)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

notazione @Id

A

@Id identifica il campo chiave

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

notazione @Column

A

Tale notazione viene utilizzata per identificare il nome di una colonna @Column(name=”Citta”) altri attributi sono:
nullable=true/false
unique=true/false
length=
@Column(name = “username”, nullable = false, unique = true, length = 50)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

la notazione @GeneratedValue

A

@GeneratedValue viene utilizzata per stabilire e specificare la strategia di generazione dei valori per i campi chiave primaria di un’entità.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

la notazione @GeneratedValue(strategy = GenerationType.AUTO)

A

sceglierà automaticamente la strategia di generazione basandosi sulle capacità del database.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

@GeneratedValue(strategy = GenerationType.IDENTITY)

A

il database sarà responsabile della generazione dei valori per l’ID usando una colonna auto-incrementata.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “user_seq”)

A

In questo esempio, viene utilizzata una sequenza chiamata “user_sequence” per generare i valori dell’ID

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cosa significa tabella dizionario?

A

Sono quelle tabelle che non vengono modificate

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Nella Notazione OneToMany quali sono le 4 PROPRIETA?

A

fetch
cascade=
mappedBy=
otphanRemoval=

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Nella Notazione OneToMany(fetch=FetchType.Eager) che significa?

A

@OneToMany(fetch = FetchType.EAGER) è una configurazione che forza il caricamento immediato delle entità correlate, quando si carica un’entità padre. Questo può semplificare l’accesso ai dati correlati.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

nella notazione @OneToMany( cascade=CascateType.ALL

A

viene utilizzata per specificare che le operazioni di persistenza effettuate sull’entità padre devono essere propagate alle entità figlio.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

nella notazione @OneToMany( mappedBy=”promo”

A

In altre parole, mappedBy contiene il nome della Variabile definita nella tabella di destinazione. Il tipo variabile è di tipo della tabella di partenza.Dall esempio andiamo a settare mappedBy=”promo” (che vive dentro alla classe PROMO) . Dentro la classe DETTPROMO scriviamo una variabile così definita: private Promo promo; Attenzione!! la variabile deve essere deve essere con la notazione @ManyToOne
private Promo promo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

@OneToMany(orphanRemoval=true)

A

L’uso di orphanRemoval = true in una relazione @OneToMany consente di semplificare la gestione delle entità figlio, assicurando che le entità figlio “orfane” vengano rimosse automaticamente dal database quando non sono più referenziate dall’entità padre.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

nella notazione:
@ManyToOne
@JoinColumn(name=”IDPROMO”,referenceColumnName=”idPromo”) cosa significa?

A

@JoinColumn(name = “IDPROMO”, referencedColumnName = “idPromo”):
name: Specifica il nome della colonna nella tabella corrente che
funge da chiave esterna.
referencedColumnName: Specifica il nome della colonna nella
tabella dell’entità di destinazione a cui la chiave esterna fa
riferimento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

cosa è la @JsonManagedReference e la @JsonBackReference ?

A

@JsonManagedReference e @JsonBackReference sono annotazioni fornite dalla libreria Jackson per la serializzazione/deserializzazione JSON in Java. Vengono utilizzate per gestire correttamente le relazioni bidirezionali tra entità e prevenire problemi di ricorsione infinita durante la serializzazione JSON.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Cosa signigfica @Basic(optional = false)?

A

Significa che non può assumere valori negativi

17
Q

cosa significa la notazione @GeneratedValue(strategy = GenerationType.IDENTITY)

A

Significa che vengono generati gli indici incrementali automaticamente e si usa nelle colonne che devono funzionare come chiavi

18
Q

per identificare l’ interfaccia di repository quale notazione usare?

A

@Repository

19
Q

Quale interfaccia estende?

A

extends JpaRepository<classe,tipo chiave primaria>

20
Q

Nelle relazioni Molti ad Uno come ovviare ad un problema ricorrente?

A

aggiungendo: @EqualsAndHashCode.Exclude

21
Q

All’ interno della cartella service che tipo di files vanno inseriti?

A

Una Interfaccia e la sua classe di implementazione. La classe di implementazione deve fare @Autowired della classe di repository deve implementare la classe di repository. Ed utilizzare le notazioni @Service e @Transactional.

22
Q

Quale è la caratteristica del interfaccia di repository

A

Estende la JpaRepository<Libro,Long> e scrive i metodi per operare sul database.

23
Q

Nella interfaccia Repository quando dobbiamo scrivere una query nella notazione @Query quali sono i due metodi FONDAMENTALI da inserire all interno delle parentesi tonde? @Query()

A

@Query(value=””, nativeQuery = true)

24
Q

dentro al file di properties per la connessione del database quali sono i settaggi principali?

A

Inseriamo il numero della porta

server.port = 8091
spring.datasource.url=
spring.datasource.driver-class-name=
spring.datasource.username=
spring.datasource.password=
spring.jpa.properties.hibernate.dialect=
spring.jpa.hibernate.ddl-auto=update

25
Q

L’ interfaccia di repository quale è la sua struttura?

A

Notazione @Repository
extends JpaRepository dove all interno delle parentesi angolari inseriamo <Nome Entity,Indice dell Entity> es: implements JpaRepository<Libro,Long>

26
Q

come si progetta un applicativo Spring Boot

A

Si genera :
* Entity
* Repository
* Service
* Controller

27
Q

Quali sono le notazioni principali dell Entity?

A

@Entity
@Table(name=””)
@Data

28
Q

Quali sono le notazioni principali del Repository?

A

Si tratta di una interfaccia
@Repository
devi estendere JpaRepository<T,ID>

29
Q

Quali sono le notazioni principali dell Service?

A

Il service è costituito dall interfaccia e la sua classe di implementazione
Nella classe di implementazione devi aggiungere :
@Service
@Transactional
@Autowired (Con il repository)

30
Q

Quali sono le notazioni principali del Controller?

A

@RestController
@RequestMapping
@Autowired(con il service)

31
Q

Scrivi un metodo del controller di tipo @GetMapping dove accoglie un valore dal client di tipo Long e restituisce ResponseEntity<Libro></Libro>

A

@GetMapping(value=”/libro/{idLibro}”,produces=”application/json”)
public ResponseEntity<Libro>readId(@PathVariable("idLibro") Long idLibro){
Libro libro=dettLibroService.findByIdLibro(idLibro);
return new ResponseEntity<Libro>(libro,HttpStatus.OK);
}</Libro></Libro>

32
Q

Quale è il vantaggio di usare il Jpql?

A

Il jpql è universale e lo possiamo adottare su qualsiasi tipo di DB , Utilizzare JPQL tramite JPA offre vantaggi significativi in termini di sicurezza rispetto alla concatenazione di stringhe SQL per formare query dinamiche. JPQL supporta i parametri nominati e posizionali, che possono essere utilizzati per evitare SQL injection e migliorare la sicurezza complessiva delle applicazioni.

33
Q

Con Jpa quale metodo viene utilizzato per inserire o modificare indistintamente?

A

.saveAndFlush(T);

34
Q

Se dobbiamo fare delle operazioni di modifica es : Insert o delete che tipo di metodo dobbiamo utilizzare?

A

Nel caso di modifica del database dobbiamo utilizzare un metodo ti tipo POST

35
Q

Cosa è HttpHeaders?

A

è una classe di Spring che viene utilizzata per manipolare l’ intestazione HTTP

36
Q

Scrivi un metodo di tipo Post dove inserisce un oggetto di tipo Libro

A

@PostMapping(value=”/inserisci”)
public ResponseEntity<Libro> insLibroFromPost(@RequestBody Libro libro){
dettLibroService.insLibro(libro);
return new ResponseEntity<Libro>(new HttpHeaders(),HttpStatus.CREATED);
}</Libro></Libro>

37
Q
A