Der Vortrag beschreibt die wesentlichen Neuerungen von JPA 2.0. Hier einige Ausszüge.
In Collections der Art Collection<AClass> kann AClass eine Klasse, aber auch ein Elementartyp sein. Durch die Verwendung von @ElementCollection plus @Embeddable wird in der Datenbank zusätzlich eine Mappingtabelle angelegt, welche neben der Id entweder eine Spalte für den Elemntartyp oder Spalten für sämtliche Attribute von AClass enthält. Das genaue Verhalten ist durch weitere Annotations konfigurierbar.
Die Annotation @OrderColumn erzeugt extra Spalte, über die sich eine Sortierung abbilden lässt. Eine Laufzeitsortierung erlaubt @OrderBy.
Die Java Persistence Query Language (JPQL) wird sprachlich erweitert um
- KEY, VALUE
- CASE
- "Restricted polimorphism"
- "Collection valued input parameter"
- CriteriaQuery
- CriteriaBuilder
- Root
- Join, ListJoin, MapJoin
- Path
- Subquery
- Parameter
- TypedQuery
- Tuple
- TupleElement
Zum Locking lässt sich folgendes zusammenfassen.
Parametrierung:
- Optimistic locking erfolgt auf Basis von @Version
- Insgesamt wurde die Parametrierung des Lockings von der Namensgebung her vereinheitlicht: OPTIMISTIC(READ), OPTIMISTIC_FORCE_INCREMENT(WRITE), PESSIMISTIC_READ, PESSIMISTIC_WRITE, PESSIMISTIC_FORCE_INCREMENT
- EntityManager: lock, find, refresh
- Query methods: setLockMode, setHint
- NamedQuery Annotation: lockMode element
- PessimisticLockException
- LockTimeoutException
Und last but not least wurde auch der 2nd Level Cache modernisiert:
- APIs und Kontroll-Optionen wurden hinzugefügt/erweitert (aus Portabilitätsgründen)
- In der API tauchen nun Methoden auf wie evict, evictAll, contains
- Annotation @Cacheable (ALL, NONE, ENABLE_SELECTIVE, DISABLE_SELECTIVE)
Keine Kommentare:
Kommentar veröffentlichen