Hibernate——如何使用二級快取
阿新 • • 發佈:2019-01-27
(一)
在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;
}
}