二级缓存、查询缓存
一级缓存:
默认启动,生命周期是和session同步的,session独享
二级缓存:
需要加载配置信息,生命周期是和应用服务器同步,session共享
1:在hibernate.cfg.xml中开启二级缓存
<!-- 开启二级缓存 -->
<property name="hibernate.cache.use_sencond_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</property>
2:增加hibernate二级缓存的缓存配置文件ehcache.xml
3:在缓存对象实体中,增加@Cache注解,如果有关联表,则关联表也需要增加注解
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
查询缓存:
需要加载配置信息,并且依赖于二级缓存
1:在hibernate.cfg.xml中开启查询缓存(针对实体对象(表)进行数据缓存)
<!-- 开启查询缓存 -->
<property name="hibernate.cache.use_query_cache">true</property>
2:在dao层调用数据库时,增加如下代码:(针对结果集进行缓存)
hibernateTemplate.setCacheQueries(true);
SSH框架搭建步骤总结
-
SSH = Struts2 + Hibernate5 + Spring5
-
框架搭建步骤:
- 搭建Struts2框架
- 导包
- 配置启动容器web.xml---StrutsPrepareandExecuteFilter
- 加载struts.xml配置文件
- 模板从struts2-core核心包中struts-default.xml
- package-->action-->result-->param
-
搭建Spring框架
- 导包
- 配置启动容器web.xml--->applicationContext.xml
- 加载applicationContext.xml配置文件
- 扫描包
- 加载jdbc属性文件
- 配置数据源、连接池、事务处理、注解驱动、导入第三方的xml文件
-
整合Struts2和Spring框架
- 导入中间包
- 在struts.xml中修改action中的class属性为容器的id
- 在对应的action类中,增加spring 的注解
-
搭建Hibernate框架
- 导包
- 加载hibernate配置文件hibernate.cfg.xml
- 数据库方言
- 数据库的连接信息
- 其它的格式化内容
- 加载实体和表的映射文件
-
整合hibernate和spring框架
- 导包
- 在spring的配置文件applicationContext中增加hibernate的配置
- hibernateTemplate、sessionFactory、事务
-
SSH框架持久化修改为Hibernate即可
- 搭建Struts2框架
-
pom.xml:
org.apache.struts struts2-core 2.5.16
<!-- 导入jstl标签库 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 增加spring的jar包整合 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- struts2和spring整合插件包 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.5.16</version> </dependency> <!-- 导入jdbc数据连接包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- 导入数据库驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.24</version> </dependency> <!-- 导入c3p0连接池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!-- session使用获取包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> <scope>provided</scope> </dependency> <!-- struts2整合json包 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.5.16</version> </dependency> <!-- Struts2注解包 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-convention-plugin</artifactId> <version>2.5.16</version> </dependency> <!-- 导入hibernate核心包 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.3.3.Final</version> </dependency> <!-- hibernate整合spring导入orm包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- hibernate缓存包 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>5.3.3.Final</version> </dependency> </dependencies>