JPA Support ist ein Module für die Unterstützung von Hibernate in Zusammenarbeit mit JSF, insbesondere mit JSF Ext.
Wieso werden solche Elemente nicht öfters eingesetzt? Die Hemmschwelle sitzt im Anbinden der Datenbank. JPA Support enthält Interfaces und Implementierungen, um den wiederholten Code zu kapseln.
@Override public List<ProcessStats> list(int first, Integer pageSize, String sortField, Boolean sortOrder, Map<String, Object> filters) { Processor processor = Context.getContext().getBean(Processor.class); List<ProcessStats> list = new ArrayList<>(); for (Process process : getWrapped().list(first, pageSize, sortField, sortOrder, filters)) { long transactionCount = processor.getTransactionCount(user, process, false); ProcessStats stats = new ProcessStats(process, transactionCount); list.add(stats); } return list; }
<p:dataTable value="#{processList.list}" var="process" lazy="true"> <p:column> <h:outputText value="#{process.value}"/> </p:column> </p:dataTable>
Die dazugehörige Bean:
private PrimefacesDataModel<Process> list; public PrimefacesDataModel<Process> getList() { if (list == null) { DetachedCriteria criteria = DetachedCriteria.forClass(Process.class); list = new PrimefacesDataModel<>(new HibernateDynamicList<>(criteria, Process.class)); } return list; }
Die HibernateDynamicList kann natürlich auch an anderer Stelle verwendet werden, als diese direkt in PrimefacesDataModel oder RichfacesDataModel zu kapseln.
Methode | Beschreibung |
---|---|
saveAndRefresh | Die Methode speichert eine Entity und läd die Daten neu aus der Datenbank. Der Sinn darin ist, Werte zu aktualisieren, die durch die Datenbank erzeugt wurden. Dies ist dann nützlich, wenn Datenbankskripte, Trigger und Sequenzgeneratoren verwendet werden. |
list | Listet eine Detached Criteria. |
Merged Save | Die Methode save führt einen Save-Or-Update durch, indem ein Merge bei Bedarf durchgeführt wird und anschließend Save bzw. Update ausgeführt wird. |
uniqueResult | Liefer ein Unique Result für eine Detached Criteria. |
makeExecutable | Macht eine Detached Criteria ausführbar. |
getPersister | Ermöglicht den Zugriff auf den Hibernate Persister für ein Entity-Objekt oder eine Entity-Klasse. |
getModified | Gibt eine Map zurück, welche Felder einer Entity modifiziert wurden. |
getDatabaseSnapshot | Gibt den Database Snapshot einer Entity zurück. Es kann sich entweder um einen Cached Snapshot handeln oder es wird ein solcher erstellt. |
getId | Liefert die Id zu einem Entity. |