Contenuti

Parte 1

  • Introduzione a JPA
  • Entità
    • Definizione
    • Anatomia
    • Queries
  • Object-Relational Mapping (ORM)
    • Entity Manager
    • Persistence Unit
    • Ciclo di vita delle Entità
  • Specifiche JPA
  • Esempio completo di JPA
  • Managing Persistent Objects

Parte 2

  • Come si manipolno le entita con un Entity Manager
  • JPQL
    • tipi di query
  • Interazione col ciclo di vita
    • callbacks
    • listeners

Materiale bibliografico

  • "Beginning Java Enterprise Edition": Cap. 4 (tranne "Integration with Bean Validation", "JPA Specification Overview")
  • "Beginning Java Enterprise Edition": Cap. 5 (tranne "Composite Primary Keys", da pag 129 a 148) e Cap. 6 (tranne "Fetching Relationships", da pag 161 a 176; "Type-Safe Criteria API", "Cache API", da pag 209 a 216)
  • Querying JPA Entities with JPQL and Native SQL

Domande di riepilogo

  • Qual è la differenza fra una entità ed un oggetto?
  • A cosa serve l'annotazione @GeneratedValue?
  • Qual è l'elemento discriminante per distinguere una entità da un POJO?
  • Qual è l'API fondamentale per la gestione delle operazioni sulle entità?
  • Quali sono le caratteristiche e le funzionalità più importanti della persistence unit?
  • Descrivere il ciclo di vita di una entità
  • Descrivere i tipi di relazioni in un database relazionale
  • A cosa serve l'annotazione @JoinColumn?
  • Definizione e funzionalità di un Persistence Context
  • Descrivere i vari tipi di query definiti da JPQL

persistence.xml visto a lezione

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="PJPAPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>pjpa.Person</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/Paolo;create=true"/>
      <property name="javax.persistence.jdbc.user" value="paolo"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
      <property name="javax.persistence.jdbc.password" value="paolo"/>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
       <property name="eclipselink.logging.level" value="INFO"/>
      <property name="javax.persistence.schema-generation.scripts.create-target" value="pjpa-create.ddl"/>
      <property name="javax.persistence.schema-generation.scripts.drop-target" value="pjpa-drop.ddl"/>
    </properties>
  </persistence-unit>
</persistence>