JPA之二级缓存

在persistence配置文件中添加缓存相关配置


<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL">

        
        <provider>org.hibernate.ejb.HibernatePersistenceprovider>
        <class>com.heiketu.entity.Userclass>
        <class>com.heiketu.entity.Orderclass>
        <class>com.heiketu.entity.WindowsPhoneclass>
        <class>com.heiketu.entity.Windowsclass>
        <class>com.heiketu.entity.Teacherclass>
        <class>com.heiketu.entity.ClassNameclass>


        
        
        <shared-cache-mode>ENABLE_SELECTIVEshared-cache-mode>

        <properties>
            
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql:///test?serverTimezone=GMT%2B8"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="admin"/>

            
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            


            
            
            <property name="hibernate.cache.use_second_level_cache" value="true"/>
            
            <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>
            
            <property name="hibernate.cache.use_query_cache" value="true"/>
        properties>
    persistence-unit>
persistence>

在classpath下加入**ehcache.xml**ehcache缓存相关配置文件。

配置文件内容:

<ehcache>

    
    <diskStore path="java.io.tmpdir"/>


    
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />

    

    
    <cache name="sampleCache1"
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        overflowToDisk="true"
        />

    
    <cache name="sampleCache2"
        maxElementsInMemory="1000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false"
        /> -->

    

ehcache>

导入ehcache相关jar包:

|---ehcache-core-2.4.3.jar
|---hibernate-ehcache-4.3.11.Final.jar
|---slf4j-api-1.6.1.jar

在需要缓存的类上增加@Cacheable(true)@Cacheable(false)相关标注,与persistence配置文件中的标签的值相呼应。

默认JPA开启了一级缓存

你可能感兴趣的:(JPA)