hibernate4 二级缓存demo实例.docx
- 文档编号:8933012
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:15
- 大小:144.20KB
hibernate4 二级缓存demo实例.docx
《hibernate4 二级缓存demo实例.docx》由会员分享,可在线阅读,更多相关《hibernate4 二级缓存demo实例.docx(15页珍藏版)》请在冰点文库上搜索。
hibernate4二级缓存demo实例
hibernate4二级缓存demo实例
hibernate使用版本是:
hibernate-release-4.2.5.Final
需要的jar包:
hibernate-release-4.2.5.Final\lib\required下所有jar包
ehcache jar包:
hibernate-release-4.2.5.Final\lib\optional\ehcache下所有包
junit:
junit-4.10.jar和mysql-connector-java-5.1.15-bin.jar
注:
hibernate4.2.5版本ehcache缓存不依赖commons-logging-1.1.1.jar,需要的是slf4j-api-1.6.1.jar
项目结构如下
hibernate.cfg.xml
Xml代码
1.
xml version='1.0' encoding='utf-8'?
>
2.
DOCTYPE hibernate-configuration PUBLIC
3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4. "http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
5.
6.
7.
-- Database connection settings -->
8.
9.
mysql:
//127.0.0.1:
3306/hibernate4
10.
11.
12.
-- JDBC connection pool (use the built-in) -->
13.
14.
-- SQL dialect -->
15.
16.
-- Enable Hibernate's automatic session context management -->
17.
18.
-- Disable the second-level cache -->
19.
--
20. -->
21.
-- 配置二级缓存 -->
22.
23.
24.
-- hibernate3的二级缓存配置 -->
25.
--
26.
-- 开启查询缓存 -->
27.
28.
29.
-- Echo all executed SQL to stdout -->
30.
31.
-- Drop and re-create the database schema on startup -->
32.
33.
34.
35.
注意:
hibernate4和hibernate3配置不一样,hibernate4是
Xml代码
1.
而hibernate3的配置是
Xml代码
1.
此处有一个疑问是:
hibernate4的官方文档中,已经把class改了,但是属性名称没有改,还是hibernate.cache.provider_class,不是上面的hibernate.cache.region.factory_class,但是写成hibernate.cache.provider_class会报下面错误
Java代码
1.org.hibernate.service.spi.ServiceException:
Unable to create requested service [org.hibernate.engine.spi.CacheImplementor]
2. at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:
186)
3. at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:
150)
4. at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:
131)
5. at org.hibernate.internal.SessionFactoryImpl.
264)
6. at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:
1790)
7. at com.test.pojo.UserTest.beforeClass(UserTest.java:
28)
8. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
9. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
10. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
11. at java.lang.reflect.Method.invoke(Method.java:
597)
12. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:
45)
13. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
15)
14. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
42)
15. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
27)
16. at org.junit.runners.ParentRunner.run(ParentRunner.java:
300)
17. at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
46)
18. at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
19. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
467)
20. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
683)
21. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
390)
22. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
197)
23.Caused by:
org.hibernate.cache.NoCacheRegionFactoryAvailableException:
Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given, please either disable second level cache or set correct region factory class name to property hibernate.cache.region.factory_class (and make sure the second level cache provider, hibernate-infinispan, for example, is available in the classpath).
24. at org.hibernate.cache.internal.NoCachingRegionFactory.buildTimestampsRegion(NoCachingRegionFactory.java:
87)
25. at org.hibernate.cache.spi.UpdateTimestampsCache.
62)
26. at org.hibernate.internal.CacheImpl.
72)
27. at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:
40)
28. at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:
35)
29. at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:
91)
30. at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:
176)
31. ... 20 more
说是hibernate.cache.region.factory_class属性没有配置,估计官方文档里没有把属性改过来。
。
。
ehcache.xml
Xml代码
1.
xml version="1.0" encoding="UTF-8"?
>
2. xsi="http: //www.w3.org/2001/XMLSchema-instance" 3. xsi: noNamespaceSchemaLocation="http: //ehcache.org/ehcache.xsd" 4. updateCheck="false"> 5. -- 6. name: cache唯一标识 7. eternal: 缓存是否永久有效 8. maxElementsInMemory: 内存中最大缓存对象数 9. overflowToDisk(true,false): 缓存对象达到最大数后,将缓存写到硬盘中 10. diskPersistent: 硬盘持久化 11. timeToIdleSeconds: 缓存清除时间 12. timeToLiveSeconds: 缓存存活时间 13. memoryStoreEvictionPolicy: 缓存清空策略 14. 1.FIFO: first in first out 先讲先出 15. 2.LFU: Less Frequently Used 一直以来最少被使用的 16. 3.LRU: Least Recently Used 最近最少使用的 17. --> 18. 19. timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" /> 20. 21. overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="3600" 22. timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LFU" /> 23.
User实体类
Java代码
1.package com.test.pojo;
2.
3.import javax.persistence.Entity;
4.import javax.persistence.GeneratedValue;
5.import javax.persistence.GenerationType;
6.import javax.persistence.Id;
7.
8.import org.hibernate.annotations.Cache;
9.import org.hibernate.annotations.CacheConcurrencyStrategy;
10.
11.@Entity
12.@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
13.public class User {
14. @Id
15. @GeneratedValue(strategy=GenerationType.IDENTITY)
16. private int id;
17. private String name;
18. private int age;
19. public int getId() {
20. return id;
21. }
22. public void setId(int id) {
23. this.id = id;
24. }
25. public String getName() {
26. return name;
27. }
28. public void setName(String name) {
29. this.name = name;
30. }
31. public int getAge() {
32. return age;
33. }
34. public void setAge(int age) {
35. this.age = age;
36. }
37.
38.}
UserTest测试类:
Java代码
1.package com.test.pojo;
2.import org.hibernate.HibernateException;
3.import org.hibernate.Session;
4.import org.hibernate.SessionFactory;
5.import org.hibernate.cfg.Configuration;
6.import org.hibernate.service.ServiceRegistry;
7.import org.hibernate.service.ServiceRegistryBuilder;
8.import org.junit.BeforeClass;
9.import org.junit.Test;
10.
11.public class UserTest {
12.
13. private static SessionFactory sessionFactory = null;
14. @BeforeClass
15. public static void beforeClass() {
16. Configuration configuration = new Configuration();
17.
18.
19. try {
20. configuration.configure();
21. } catch (HibernateException e) {
22. // TODO Auto-generated catch block
23. e.printStackTrace();
24. }
25.
26.
27. ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
28. sessionFactory = configuration.buildSessionFactory(serviceRegistry);
29. }
30. @Test
31. public void testEhcache() {
32.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hibernate4 二级缓存demo实例 二级缓存 demo 实例