问题一:缓存的命中率低。如代码所示,如果getAllObject查询参数是一个VO对象,那么当你用new每次创建的时候,缓存系统都认为不是同一个对象,导致缓存失败,直接从数据库查询;
但是当你用SPRING的载入bean的方式来加载bean的时候,默认方式,没有修改为多态模式,缓存可以找到,但是设置查询条件却没有用了;
那么这样条件下的命中率很低,缓存还有意义吗?
下面的代码是设置缓存的例子:
String DEFAULT_CONTEXT_FILE = "/applicationContext.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(DEFAULT_CONTEXT_FILE);
//SeaBean seaBean = new SeaBean();
TestServiceImpl testService = (TestServiceImpl)context.getBean("testService");
SeaBean seaBean = (SeaBean)context.getBean("pair");
seaBean.setName("LIQF");
//System.out.println("testService.getPaire().getName()===" + testService.getPaire().getName());
//TestServiceImpl testService = new TestServiceImpl();
System.out.println("1--第一次查找并创建cache");
List<SeaBean> restList1 = testService.getAllObject(seaBean);
for(SeaBean seaBeanTem : restList1){
System.out.println("strTem1===" + seaBeanTem.getName());
}
//paire = new com.liqf.other.Paire();
SeaBean seaBean2 = (SeaBean)context.getBean("pair");
seaBean2.setName("LIQF77");
System.out.println("2--在cache中查找");
System.out.println(seaBean2.getName());
List<SeaBean> restList = testService.getAllObject(seaBean2);
for(SeaBean seaBeanTem : restList){
System.out.println("strTem2===" + seaBeanTem.getName());
}
System.out.println("3--remove cache");
testService.updateObject(null);
//System.out.println("4--需要重新查找并创建cache");
List<SeaBean> restList2 = testService.getAllObject(seaBean);
for(SeaBean seaBeanTem : restList2){
System.out.println("strTem3===" + seaBeanTem.getName());
}
分享到:
相关推荐
,使用Spring+JPA+Velocity+Ehcache作为基础开发架构,应用SpringSecurity框架管理系统权限,结合URL重写技术静态化商城前台页面。 毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生...
- **6.2.6 延迟加载思考**:探讨延迟加载的应用场景与限制。 #### 五、查询缓存 - **7.1 什么是查询缓存**:用于存储查询结果,避免重复查询数据库。 - **7.2 一级缓存**: - **7.2.1 一级缓存工作原理**:基于...
电子书还涉及了一些与开发环境有关的话题,例如在Linux下搭建Tiny开发环境、如何重构SmartAdmin来展示TinyUI、在Tiny框架中引入缓存解决方案如EhCache和JCS,以及如何利用Tiny框架中的组件来进行Web界面开发等。...
ORM允许开发者用Java对象模型来思考问题,而不是直接处理SQL语句。 2. **配置文件(Hibernate.cfg.xml)**:这是Hibernate项目的配置文件,包含了数据库连接信息、方言设置、缓存配置等重要参数。 3. **实体类...
- **编后赘言**: 作者的一些感悟和思考。 #### 三、具体知识点详解 ##### 1. 准备工作 - **环境搭建**: - 下载并安装Ant。 - 将Ant的`bin`目录加入到系统`PATH`变量中。 - **依赖项准备**: - 下载Hibernate库...