hibernate中 ,使用createSQLQuery(sql)查询,在开启getHibernateTemplate().setCacheQueries(true);后,执行到query.list();报异常:java.lang.ArrayIndexOutOfBoundsException: 0
当把关闭缓存getHibernateTemplate().setCacheQueries(false)能正常返回。
原因估计是createSQLQuery返回的对象不受hibernate 管理,因此对其设置缓存失效。
5.Struts2+Spring+Junit单元测试
1.servlet线程安全吗 怎样避免?
Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求。所以Servlet是线程不安全的。 有几种方法可以实现Servlet线程安全: 1,实现 SingleThreadModel 接口的servlet是线程安全的 2,用synchronized同步对共享数据的操作 3,避免使用实例变量 Servlet的优势在于多线程,高并发。第一种方法其实就是扼杀了其并发性能,所以不推荐在高并发的业务环境下使用。2.web启动线程
调用servlet的时候,启动线程就ok了
不要用listener,如果用了,tomcat启动就会加载,会提高tomcat内存用量
3.spring事务控制调用存储过程,存储过程中commit了还可以rollback吗?
commit后就不能rollback了
4.查询缓存是什么
通过SQL查询的话,是不会经过hibernate的缓存的
使用Junit对Struts+spring系统进行单元测试,好处是不用启动tomcat等容器。
简单实例代码如下: