Java 休眠二级缓存-程序不终止
上面的代码是我如何将实体类UserDetails定义为Java 休眠二级缓存-程序不终止,java,mysql,hibernate,second-level-cache,Java,Mysql,Hibernate,Second Level Cache,上面的代码是我如何将实体类UserDetails定义为cacheable。我还在hibernate.cfg.xml中添加了两行: @Entity @Table(name="user_details") @Cacheable @Cache(usage=CacheConcurrencyStrategy.READ_ONLY) public class UserDetails {...} 正如预期的那样,我只得到一个SELECTquery,这意味着hibernate从二级缓存获取数据。我还可以在控制
cacheable
。我还在hibernate.cfg.xml
中添加了两行:
@Entity
@Table(name="user_details")
@Cacheable
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
public class UserDetails {...}
正如预期的那样,我只得到一个SELECT
query,这意味着hibernate从二级缓存获取数据。我还可以在控制台上打印我的对象
但是,我的计划没有结束。它在Eclipse上运行,我必须手动停止它。我做错什么了吗?谢谢。问题在于您没有关闭维护大量系统资源的
会话工厂。其中一些资源必须是线程,以防止应用程序结束。尝试更改ehcache的版本。我试过这个东西,它成功了。看到这个了吗
非常感谢。祝您有个美好的一天。
<!-- second-level cache -->
<property name="cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
session = sessionFactory.openSession();
session.beginTransaction();
UserDetails user = new UserDetails();
user = (UserDetails)session.get(UserDetails.class, 3);
logger.info(user);
session.getTransaction().commit();
session.close();
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
UserDetails user2 = new UserDetails();
user2 = (UserDetails)session2.get(UserDetails.class, 3);
logger.info(user2);
session2.getTransaction().commit();
session2.close();