Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:modul:ffit:3-jahr:java:learningunits:lu03:c [2025/09/01 21:08] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu03:c [2025/09/01 23:22] (aktuell) – apeter | ||
---|---|---|---|
Zeile 15: | Zeile 15: | ||
Wir wählen den Java-first-Ansatz mit JPA/ | Wir wählen den Java-first-Ansatz mit JPA/ | ||
- | Die '' | + | Die '' |
Ebenfalls existiert eine Konfiguration '' | Ebenfalls existiert eine Konfiguration '' | ||
Zeile 22: | Zeile 22: | ||
| < | | < | ||
<code properties> | <code properties> | ||
+ | DB_URL=jdbc: | ||
+ | DB_USER=localuser | ||
+ | DB_PASSWORD=secret | ||
</ | </ | ||
</ | </ | ||
<code properties> | <code properties> | ||
+ | jakarta.persistence.jdbc.url=jdbc: | ||
+ | jakarta.persistence.jdbc.user=localuser | ||
+ | jakarta.persistence.jdbc.password=secret | ||
</ | </ | ||
</ | </ | ||
- | Damit sind folgende Anpassungen nötig: | + | Im Java-Code |
* Die Eigenschaften der Tabelle werden als Annotationen ('' | * Die Eigenschaften der Tabelle werden als Annotationen ('' | ||
* Ein leerer Standard-Constructor ist nun nötig, damit Hibernate im Hintergrund eine neue Instanz erstellen kann. | * Ein leerer Standard-Constructor ist nun nötig, damit Hibernate im Hintergrund eine neue Instanz erstellen kann. | ||
* '' | * '' | ||
- | Dadurch sieht die Klasse '' | + | Dadurch sieht die Klasse '' |
<code java> | <code java> | ||
- | // package ... | + | package |
import jakarta.persistence.*; | import jakarta.persistence.*; | ||
Zeile 77: | Zeile 83: | ||
... | ... | ||
</ | </ | ||
+ | |||
+ | Um Objekte von der Datenbank zu lesen kann mittels '' | ||
+ | Bei den ''< | ||
+ | |||
+ | <code java> | ||
+ | private final EntityManagerFactory emf = Persistence.createEntityManagerFactory(" | ||
+ | |||
+ | public List< | ||
+ | try (EntityManager em = emf.createEntityManager()) { | ||
+ | var query = em.createQuery(" | ||
+ | if (limit > 0) { | ||
+ | query.setMaxResults(limit); | ||
+ | } | ||
+ | return query.getResultList(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | public void saveAll(List< | ||
+ | try (EntityManager em = emf.createEntityManager()) { | ||
+ | try { | ||
+ | em.getTransaction().begin(); | ||
+ | books.forEach(em:: | ||
+ | em.getTransaction().commit(); | ||
+ | } catch (RuntimeException e) { | ||
+ | if (em.getTransaction().isActive()) { | ||
+ | em.getTransaction().rollback(); | ||
+ | } | ||
+ | log.error(" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Schreiben Sie Ihren Code so um, dass die '' | ||
+ | |||
+ | Der Commit '' | ||
+ | |||