05 - JPA Flashcards
Ziel: Object Relational Mapping (ORM)
Zusammenhang zwischen Objekte und deren Attribute mit Relationen automatisiert schaffen.
Definition: Java Persistence API (JPA)
Diese API ist ein Standard zur Persistierung von Objekten, der Mapping zwischen Objekten und Relationen automatisiert. Es sollten weiterhin Datenbank-Zugriffe und SQL-Befehle schon durch libraries selbst erstellt werden.
Vorteil: Java Persistence API
Viel Programmierarbeit kann mit der JPA erspart werden.
Definition: JPA-Provider
Ein JPA-Provider implementiert den Standard für JPA selber. Hiervon sind einige bekannte beispiele EclipseLink, Hibernate ORM und Apache OpenJPA.
Definition: Entitätsklasse
Eine Klasse, deren Objekte von JPA persistiert werden sollen. Die Entitätsklasse wird dann mit Annotationen je nach Zweckmäßigkeit annotiert.
Syntax: Annotationen
@ < Name der Annotation >
Syntax: 1:1-Beziehung zwischen Entitäten
@OneToOne
@JoinColumn(name = “fremdschlüssel_column_name”)
Name der spalte immer nach Schema: klassenname_spaltenname
Syntax: n:1-Beziehung zwischen Entitäten
@ManyToOne
@JoinColumn(name = “fremdschlüssel_column_name”)
Name der spalte immer nach Schema: klassenname_spaltenname
Syntax: n:m-Beziehung zwischen Entitäten
@ManyToMany
@JoinTable(name = “name_hilfstabelle”,
joinColumns = {@JoinColumn(name = “column_name_richtung_entitätsklasse”)},
inverseJoinColumns = {@JoinColumn(name = “column_name_richtung_fremdschlüssel”)}
Name der spalte immer nach Schema: klassenname_spaltenname
Objektlebenszyklus: Phasen (4)
Nicht unbedingt in dieser Reihenfolge
1) Transient
2) Managed
3) Detached
4) Removed
EntityManager Methoden (6)
1) getTransaction().begin()
2) getTransaction().commit()
3) persist(Objekt)
4) find(Entitätsklasse.class, gesuchter Wert)
5) refresh(Objekt)
6) remove(Objekt)
Syntax: EntityManager Erzeugen (2)
1) EntityManagerFactory factory = Persistence.createEntityManagerFactory(“persistence_unit_name”);
2) EntityManager em = factory.createEntityManager();
Syntax: JPA-Queries (2)
1) Query query = em.createQuery(“JPQL_Syntax”)
2) TypedQuery typedQuery = em.createQuery(“JPQL_Syntax”, Class);
Syntax: Query Results (2)
1) List liste = query.getResultList();
2) List < T > liste = typedQuery.getResultList();
Syntax: Entitätsklasse (Annotation)
@Entity ---------------- Wenn die Klasse anders heist als im DBMS: @Entity @Table(name = "Tabellenname in DB)