EN · DE · RU · FR · ES

#1328: JpaConfig.kt

projectforge-business/src/main/kotlin/org/projectforge/framework/persistence/jpa/JpaConfig.kt Typ: Kotlin · Rolle: Komponente · Quelle: projectforge-business/src/main/kotlin/org/projectforge/framework/persistence/jpa/JpaConfig.kt 94 Zeilen · 54 Code · 25 Kommentare · 15 leer
Quellcodedatei unter projectforge-business/src/main/kotlin/org/projectforge/framework/persistence/jpa/JpaConfig.kt mit Kotlin-Code für die Komponentenschicht.

Codestruktur

Annotationen: Bean, Value, Configuration

Klassen: JpaConfig

Spring-Beans: entityManagerFactory

Funktionen (1): entityManagerFactory

Eigenschaften (10): hibernateShowSql, hibernateFormatSql, hibernateHighlightSql, hibernateUseSqlComments, hibernateGenerateStatistics, hibernateHbm2ddlAuto, hibernateSearchDirectoryRoot, factoryBean, vendorAdapter, properties

Importe: 9 Pakete

Paket: org.projectforge.framework.persistence.jpa

Quellcode (gekürzt)

package org.projectforge.framework.persistence.jpa

import org.hibernate.cfg.AvailableSettings
import org.projectforge.framework.persistence.search.MyAnalysisConfigurer
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter
import java.util.*
import javax.sql.DataSource

@Configuration
open class JpaConfig {
    @Value("\${hibernate.show_sql}")
    private val hibernateShowSql = false

    @Value("\${hibernate.format_sql}")
    private val hibernateFormatSql = false

    @Value("\${hibernate.hibernateHighlightSql}")
    private val hibernateHighlightSql = false

    @Value("\${hibernate.hibernateUseSqlComments}")
    private val hibernateUseSqlComments = false

    @Value("\${hibernate.generate_statistics}")
    private val hibernateGenerateStatistics = true

    @Value("\${hibernate.hbm2ddl.auto}")
    private val hibernateHbm2ddlAuto: String? = null

    @Value("\${hibernate.search.directory.root}")
    private val hibernateSearchDirectoryRoot: String? = null

    @Bean
    open fun entityManagerFactory(dataSource: DataSource?): LocalContainerEntityManagerFactoryBean {
        val factoryBean = LocalContainerEntityManagerFactoryBean()
        factoryBean.dataSource = dataSource
        factoryBean.setPackagesToScan("org.projectforge")

        val vendorAdapter = HibernateJpaVendorAdapter()
        factoryBean.jpaVendorAdapter = vendorAdapter

        val properties = Properties()
        //properties.put(AvailableSettings.DIALECT, hibernateDialect);
        properties[AvailableSettings.SHOW_SQL] = hibernateShowSql
        properties[AvailableSettings.FORMAT_SQL] = hibernateFormatSql
        properties[AvailableSettings.HIGHLIGHT_SQL] = hibernateHighlightSql
        properties[AvailableSettings.USE_SQL_COMMENTS] = hibernateUseSqlComments
        properties[AvailableSettings.GENERATE_STATISTICS] = hibernateGenerateStatistics
        properties[AvailableSettings.HBM2DDL_AUTO] = hibernateHbm2ddlAuto
        properties[AvailableSettings.ENABLE_LAZY_LOAD_NO_TRANS] = true
        properties[AvailableSettings.AUTOCOMMIT] = false
        properties[AvailableSettings.DEFAULT_BATCH_FETCH_SIZE] = 100

        /*
        properties["hibernate.javax.cache.uri"] = "classpath://ehcache.xml" // Funktioniert.
        properties["hibernate.cache.use_second_level_cache"] = true
        properties["hibernate.cache.use_query_cache"] = true
        properties["hibernate.cache.region.factory_class"] = JCacheRegionFactory::class.qualifiedName
        properties["hibernate.javax.cache.provider"] = org.ehcache.jsr107.EhcacheCachingProvider::class.qualifiedName
        */

        properties["hibernate.search.backend.analysis.configurer"] = MyAnalysisConfigurer::class.qualifiedName
        properties["hibernate.search.backend.directory.root"] = hibernateSearchDirectoryRoot
        factoryBean.setJpaProperties(properties)

        return factoryBean
    }
}

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcodedatei-Header: 2024 -> 2025.
cf00da112 Migration läuft...
1e18ea268 ehcache entfernt :-(
2e0e9d923 ehcache konfiguriert, funktioniert aber nicht :-(