Diese Dokumentationsseite beschreibt die Integration der Java Persistence API (JPA) ab Release 2016.06.
Allgemeines
Mit Release 2016.06 wurde die Datenbankanbindung in MyCoRe von der direkten Nutzung von
Hibernate auf die Java Persistence API (JPA)
umgestellt. Dies hat den Vorteil, dass bei Bedarf die darunter liegende
Hibernate-API gegen eine andere JPA Implementation ausgetauscht werden kann.
Konfiguration
Grundsätzlich bringt der MyCoRe-Kern bereits alle erforderlichen Grundeinstellungen mit. Lediglich die
Konfigurationsdatei persistence.xml
muss in den Konfigurationsordner abgelegt werden. Hier sind nur noch einige wenige Parameter
wie der Datenbankname MY_DATABASE, das Schema MY_SCHEMA, der Datenbankbenutzer DATABASE_USER
und das Passwort DATABASE_PASSWORD anzupassen.
<?xml version="1.0" encoding="UTF-8" ?><persistencexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"version="2.0"xmlns="http://java.sun.com/xml/ns/persistence"><persistence-unitname="MyCoRe"transaction-type="RESOURCE_LOCAL"><mapping-file>META-INF/mycore-base-mappings.xml</mapping-file><mapping-file>META-INF/mycore-ifs-mappings.xml</mapping-file><mapping-file>META-INF/mycore-iview2-mappings.xml</mapping-file><mapping-file>META-INF/mycore-pi-mappings.xml</mapping-file><mapping-file>META-INF/mycore-user2-mappings.xml</mapping-file><properties><!-- PostgreSQL --><propertyname="javax.persistence.jdbc.driver"value="org.postgresql.Driver"/><propertyname="javax.persistence.jdbc.url"value="jdbc:postgresql://127.0.0.1/MY_DATABASE?currentSchema=MY_SCHEMA"/><propertyname="javax.persistence.jdbc.user"value="DATABASE_USER"/><propertyname="javax.persistence.jdbc.password"value="DATABASE_PASSWORD"/><propertyname="hibernate.default_schema"value=""/><propertyname="hibernate.hbm2ddl.auto"value="update"/><!-- second-level cache --><propertyname="hibernate.cache.region.factory_class"value="org.hibernate.cache.internal.NoCachingRegionFactory"/><propertyname="hibernate.cache.use_second_level_cache"value="false"/><propertyname="hibernate.cache.use_query_cache"value="false"/><!-- Set batch_size to "0" in case of SQL batch Errors --><propertyname="hibernate.jdbc.batch_size"value="2000"/><propertyname="hibernate.default_batch_fetch_size"value="100"/><!-- Echo all executed SQL to stdout --><propertyname="hibernate.show.sql"value="true"/><propertyname="hibernate.format.sql"value="true"/><!-- configuration pool via c3p0 --><!-- HowTo: http://howtodoinjava.com/hibernate/hibernate-c3p0-connection-pool-configuration-tutorial/ --><propertyname="hibernate.connection.provider_class"value="org.hibernate.connection.C3P0ConnectionProvider"/><propertyname="hibernate.c3p0.min_size"value="5"/><propertyname="hibernate.c3p0.max_size"value="60"/><propertyname="hibernate.c3p0.acquire_increment"value="2"/><propertyname="hibernate.c3p0.max_statements"value="30"/><propertyname="hibernate.c3p0.timeout"value="1800"/></properties></persistence-unit></persistence>
Der für den Zugriff auf die Datenbank notwendige JDBC-Treiber (i.d.R. eine JAR-Datei) kann im lib Ordner
des Konfigurationsverzeichnisses abgelegt werden.
Hinweis bei Performance-Problemen
Sollt die Anwendung wiederholt abstürzen, da es mit der Anzahl der freien Datenbankverbindungen
Ausnahmen gibt, könnte folgende zusätzliche Konfiguration helfen. Tote Sessions werden dann automatisch geschlossen.