spring-status-hibernate
来源:互联网 发布:手机vpn代理软件 编辑:程序博客网 时间:2024/06/05 00:45
web.xml配置 增加过滤器开启struts控制器和开启延迟加载并指定spring容器对象
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!-- opensessioninviewfilter,放在struts2 filter之前 开启延迟加载 --> <filter> <filter-name>opensession</filter-name> <filter-class> org.springframework.orm.hibernate4.support.OpenSessionInViewFilter </filter-class> </filter> <!-- 使用过滤加载strtus2控制器 --> <filter-mapping> <filter-name>opensession</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>strutsmvc</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <!-- 默认找src/struts.xml配置文件,找action和result配置 --> <!-- 默认只有.action或没有扩展名请求会找action处理 --> </filter> <filter-mapping> <filter-name>strutsmvc</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 指定Spring容器配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 创建Spring容器对象 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <distributable/></web-app>
maven pom.xml配置
- 自动加载jar包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.xdl</groupId> <artifactId>ssh_01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!-- java源文件编码 --> <properties> <project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding> </properties> <!-- jar --> <!-- http://maven.aliyun.com/nexus/ --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>Javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.31</version> <exclusions> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.3.31</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-convention-plugin</artifactId> <version>2.3.31</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version></dependency> <!-- spring环境 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.1.6.RELEASE</version></dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.6.RELEASE</version></dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.1.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.1.6.RELEASE</version></dependency> <!-- struts2-spring-plugin.jar --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.31</version></dependency><!-- hibernate --><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.21.Final</version></dependency><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>4.2.21.Final</version></dependency><!-- c3p0 --><dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.8</version></dependency> </dependencies> <!-- 指定编译版本和编码 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <defaultGoal>compile</defaultGoal> </build></project>
spring配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"> <!-- 扫描Action --> <context:component-scan base-package="cn.xdl.action"/> <!-- 扫描Dao --> <context:component-scan base-package="cn.xdl.dao"/> <!-- JdbcTemplate对象 --> <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="c3p0"></property> </bean> <!-- c3p0 --> <bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="root"></property> <property name="password" value="root"></property> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/studyonline?useUnicode=true&characterEncoding=utf8"></property> </bean> <!-- HibernateTemplate --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 指定连接池 --> <property name="dataSource" ref="c3p0"> </property> <!-- 指定hibernate.cfg.xml --> <property name="configLocations" value="classpath:hibernate.cfg.xml"> </property> </bean> <!-- Hibernate事务处理 --> <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 支持@Transactional --> <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/></beans>
hibernate配置
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <!-- 显示底层sql语句 --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- 开启二级缓存 --> <property name="hibernate.cache.use_sencond_level_cache">true</property> <property name="hibernate.cache.region.factory_class"> org.hibernate.cache.ehcache.EhCacheRegionFactory </property> <!-- 开启查询缓存 --> <property name="hibernate.cache.use_query_cache">true</property> <!--关联映射的实体类--> <mapping class="cn.xdl.entity.Note"/> <mapping class="cn.xdl.entity.User"/> </session-factory></hibernate-configuration>
实体类配置
//定义为映射组件@Entity//映射数据库的哪个表@Table(name="NOTE")//开启二级缓存的只读@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)public class Note { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="ID") private Integer id; @Column(name="CONTEXT") private String context; @Column(name="PUBLISH_TIME") private Date publishTime; @Column(name="LIKE_COUNT") private Integer likeCount;// @Column(name="USER_ID")// private Integer userId; @Column(name="VIDEO_ID") private Integer videoId; //追加关联属性 一级缓存 //在user属性前追加下面标记 表示多对一 //FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。页面需要时再执行查询 //FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。 @ManyToOne(fetch=FetchType.LAZY) //建立User和Note的单表映射 //在Note类中加user属性,删除原有的userId属性 @JoinColumn(name="USER_ID") //设置只读属性,只可以对数据库进行读取 //CacheConcurrencyStrategy.NONE //CacheConcurrencyStrategy.READ_ONLY,只读模式,在此模式下,如果对数据进行更新操作,会有异常; //CacheConcurrencyStrategy.READ_WRITE,读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询; //CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不严格的读写模式则不会的缓存数据加锁; //CacheConcurrencyStrategy.TRANSACTIONAL,事务模式指缓存支持事务,当事务回滚时,缓存也能回滚,只支持JTA环境。 @Cache(usage=CacheConcurrencyStrategy.READ_ONLY) private User user;
二级缓存的配置
<ehcache> <diskStore path="java.io.tmpdir"/> //默认缓存 <defaultCache maxElementsInMemory="1000"<!-- 缓存最大数目 --> eternal="false"<!-- 缓存是否持久 --> timeToIdleSeconds="10"<!-- 当缓存闲置n秒后销毁 --> timeToLiveSeconds="120"<!-- 当缓存存活n秒后销毁--> overflowToDisk="true"<!-- 是否保存到磁盘,当系统当机时 查询出来的缓存数据超过了最大数目--> /> <cache name="sampleCache1" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" /> <cache name="sampleCache2" maxElementsInMemory="1000" eternal="true" timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="false" /> </ehcache>
DAO接口实现类和查询缓存的开启
package cn.xdl.dao.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.orm.hibernate4.HibernateTemplate;import org.springframework.stereotype.Repository;import cn.xdl.dao.NoteDao;import cn.xdl.entity.Note;@Repository("noteDao1")public class HibernateNoteDao implements NoteDao{ @Resource private HibernateTemplate hibernateTemplate; @Override public List<Note> selectByUserId(int userId) { String hql = "from Note where user.id=?"; //启用缓存,查询缓存的开启,在执行查询语句之前调用该方法执行查询缓存 hibernateTemplate.setCacheQueries(true); List list = hibernateTemplate.find(hql, userId); return list; } @Override public int deleteById(int id) { Note note = hibernateTemplate.get(Note.class, id); if(note==null){ return 0; }else{ hibernateTemplate.delete(note); return 1; } } @Override public Note selectById(int id) { try{ Note note = hibernateTemplate.load(Note.class, id); return note; }catch(Exception e){ return null; } }}
阅读全文
0 0
- spring-status-hibernate
- struts hibernate spring 环境配置时出现 HTTP Status 404 Servlet action is not available (解决方法)
- spring http status 503 错误
- Spring MVC HTTP Status 406
- Spring MVC HTTP Status 405
- Spring + Hibernate
- Spring + Hibernate
- spring+hibernate
- Spring + Hibernate
- hibernate+spring
- Spring+hibernate
- hibernate+spring
- Spring+Hibernate
- spring+hibernate
- spring-hibernate
- hibernate+spring
- spring hibernate
- Spring-Hibernate
- CTF/CTF练习平台-各种绕过哟【sha1数组类型比较漏洞】
- 最全Pycharm教程(35)——Pycharm中使用Vagrant
- MacOS 开发
- 关于高级类特性修饰符、类间关系,API概念浅析
- HDU 6050 推公式
- spring-status-hibernate
- Struts2(9)——struts2与OGNL的结合(二)
- 测试之黑盒测试用例设计方法(等价类划分法)
- SpringMVC、Spring和Struts的区别
- Minimax Triangulation UVA
- 最全Pycharm教程(36)——Pycharm中Vagrant高级技巧
- webstorm sublime工具代码简写
- HDU 6033 数论
- java.sql.SQLException:ORA-01861:文字和格式字符串不匹配