1. 程式人生 > >Hibernate——如何使用二級快取

Hibernate——如何使用二級快取

(一)

在hibernate-release-4.2.21.Final\project\etc目錄下找到ehcache.xml檔案,複製到專案的src目錄下。
ehcache.xml中的內容(使用時記得把註釋去掉)

<defaultCache
        maxElementsInMemory="10000" <!-- 可以快取的物件數量 -->
        eternal="false"             <!-- 是否永久儲存 -->
        timeToIdleSeconds="120"     <!-- 最大閒置時間 沒有訪問情況下最多存活時間 -->
timeToLiveSeconds="1200" <!-- 最大存活時間 不管有沒有訪問 最多存活這個時間 --> overflowToDisk="true" <!-- 記憶體溢位則存到硬碟 --> />

(二)

引入hibernate-release-4.2.21.Final\lib\optional\ehcache目錄下所有jar包

(三)

配置檔案
Hibernate4

<property name="cache.use_second_level_cache">true
</property> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

Hibernate3

<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property
>

(四)

新增@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)//可讀可寫

@Entity
@Table(name = "t_group")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Group {
    private int id;
    private String name;
    private List<User> users = new ArrayList<User>();

    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @OneToMany(mappedBy = "group", cascade = CascadeType.ALL
            // fetch=FetchType.EAGER
            )
    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }
}