- 浏览: 172390 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
gwill_21:
dwr.xml找不到怎么办,难道要自己手写dwr.xml?痛苦 ...
DWR框架 —— 用户注册验证 -
recoba7:
MLDN魔乐科技 Oracle学习笔记 (5) -
lanni2460:
呵呵 尽管现在才看到这个 但是我真的觉得 李老师 讲的很好呢 ...
严重声明,那些恶意诋毁MLDN及李兴华老师的其他培训机构统统走开 -
chian_xxp:
只要把功能实现了,代码结构合理了,代码性能提高了,该注意的注意 ...
业务、业务、业务。。。 -
wzpbb:
密码多少啊??? 给一下啊
MLDN 魔乐科技 Oracle 学习笔记(2)
Spring结合Hibernate
一、建立项目
(1)建立数据库
DROP DATABASE mldn_hibernate;
CREATE DATABASE mldn_hibernate;
USE mldn_hibernate;
DROP TABLE news ;
CREATE TABLE news ( id int primary key auto_increment , title VARCHAR(50) not null, post_date datetime not null, abstractnote VARCHAR(200) not null, content text not null, imgurl VARCHAR(50) ); |
(2)项目:SpringHibernateDemo01
二、加入Spring和Hibernate的支持
注意:因为现在是需要借助Spring来管理或者组合其他框架,所以需要先加入Spring的支持。
1、加入Spring的支持
(1)项目—右键—MyEclipse—Add Spring Capabilities…
(2)加入Spring核心jar包以及和Hibernate结合需要的jar包
并且注意加入jar包的方式,还是选择放到lib目录下
(3)添加Spring的管理配置文件
一般采用默认名称applicationContext.xml
(4)Finish完成
2、加入Hibernate的支持
(1)项目—右键—MyEclipse—Add Hibernate Capabilities…
(2)加入Hibernate的支持jar包
注意:比之前没有使用Spring的时候多了一个jar包
(3)选择Hibernate的配置文件
因为此处使用了Spring,所以,选择在已有的Spring的配置文件中进行Hibernate的配置
(4)选择Spring的核心配置文件及填写SessionFactory的ID
选择是重新创建一个Spring的核心配置文件还是使用已经存在的,这里使用已经存在的即可
并且填写SessionFactory的ID,即定义SessionFactory的bean标签的id值
(5)配置数据库连接及数据源的bean的id
(6)是否由Hibernate自动创建SessionFactory类
取消选择
(7)对于重复添加的jar的处理方式
选择保留现有的或者替换都可以
3、查看加入Hibernate支持后Spring的applicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/mldn_hibernate"> </property> <property name="username" value="root"></property> <property name="password" value="mysqladmin"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> </bean>
</beans> |
4、选择数据源连接方式
(1)现在默认的是使用公用的数据源连接池的连接方式
使用该中方式,需要再加入commons-pool.jar ,否则会报找不到类的错误。
在Spring开发包的spring-framework-2.0-m3\lib\jakarta-commons中可以找到该jar包。
(2)使用c3p0方式进行数据源处理
需要修改Spring配置文件如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.DriverManagerDataSource"> <property name="driverClass" value="org.gjt.mm.mysql.Driver"> </property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/testdb"> </property> <property name="user" value="root"></property> <property name="password" value="mysqladmin"></property> </bean> |
需要注意:当实现类继承HibernateDaoSupport,并通过Spring注入了SessionFactory,使用该方法对于c3p0的连接池,可以直接通过getSession 进行处理,但如果使用common-pool的连接池则还需要手工关闭连接
5、加入Hibernate的show_sql属性配置
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql"> true </prop> </props> </property> </bean> |
6、生成数据映射,建立pojo类
生成映射没有变化
7、编写dao
package mldn.lin.dao;
import java.util.List;
import mldn.lin.pojo.News;
public interface NewsDAO {
public boolean doInsert(News news) throws Exception;
public boolean doUpdate(News news) throws Exception;
public boolean doRemove(int id) throws Exception;
public List<News> findAll() throws Exception;
public List<News> findAll(int cp,int ls,String keyword) throws Exception;
public int getAllCount() throws Exception;
public News findById(int id) throws Exception;
} |
8、编写实现类
三种结合的实现形式:
1、 手工编写实现类,并定义SessionFactory属性,但需要手工进行Session的打开关闭,而且需要通过Spring注入SessionFactory对象
2、 继承HibernateDaoSupport,并通过Spring注入了SessionFactory,使用该方法对于c3p0的连接池,可以直接通过getSession 进行处理,但如果使用common-pool的连接池则还需要手工关闭连接。
3、 继承HibernateDaoSupport,并注入了hibernateTemplate属性,使用该方法可以完美的关闭和处理事务,但需要通过gethibernateTemplate来进行操作,而不能直接使用getSession进行处理。
第一种方法:手工编写实现类(开发不用)
package mldn.lin.dao.impl;
import java.util.List;
import mldn.lin.dao.NewsDAO; import mldn.lin.pojo.News;
import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory;
public class NewsDAOImpl implements NewsDAO {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; }
public boolean doInsert(News news) throws Exception { // TODO Auto-generated method stub Session session=sessionFactory.openSession(); session.save(news); session.beginTransaction().commit(); session.close(); return true; }
public boolean doRemove(int id) throws Exception { // TODO Auto-generated method stub Session session=sessionFactory.openSession(); session.delete(findById(id)); session.beginTransaction().commit(); session.close(); return true; }
public boolean doUpdate(News news) throws Exception { // TODO Auto-generated method stub Session session=sessionFactory.openSession(); session.update(news); session.beginTransaction().commit(); session.close(); return true; }
public List<News> findAll() throws Exception { // TODO Auto-generated method stub Session session=sessionFactory.openSession(); List all = session.createCriteria(News.class).list(); session.close(); return all; }
public List<News> findAll(int cp, int ls, String keyword) throws Exception { // TODO Auto-generated method stub Session session=sessionFactory.openSession(); String hql="FROM News WHERE title=? OR abstractnote=? OR content=?"; Query q=session.createQuery(hql); q.setString(0, "%"+keyword+"%"); q.setString(1, "%"+keyword+"%"); q.setString(2, "%"+keyword+"%"); List<News> all=q.list(); session.close(); return all; }
public News findById(int id) throws Exception { // TODO Auto-generated method stub Session session=sessionFactory.openSession(); News news=(News) session.get(News.class, id); session.close(); return news; }
public int getAllCount() throws Exception { // TODO Auto-generated method stub Session session=sessionFactory.openSession(); String hql="SELECT count(*) FROM News"; Query q=session.createQuery(hql); List all=q.list(); int count=0; if(all!=null && all.size()>0){ count=((Long)all.get(0)).intValue(); } session.close(); return count; } }
|
实现类中定义sessionfactory属性,需要使用Spring进行注入
将实现类配置到Spring管理中
<bean id="newsdaoimpl" class="mldn.lin.dao.impl.NewsDAOImpl"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> |
编写测试类进行测试
package mldn.lin.test;
import mldn.lin.dao.NewsDAO;
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test { public static void main(String[] args){ ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); NewsDAO newsdao=(NewsDAO) ctx.getBean("newsdaoimpl");
try { System.out.println(newsdao.getAllCount()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
} }
|
虽然这样可以使Spring结合hibernate进行开发,但是还需要用户自行编写Session的打开关闭、事务处理。
第二种方法:使用Spring中提供好的HibernateDaoSupport支持类
如果要解决以上问题,可以使用Spring中提供好的HibernateDaoSupport支持类来完成
编写实现类:
package mldn.lin.dao.impl;
import java.util.List;
import mldn.lin.dao.NewsDAO; import mldn.lin.pojo.News;
import org.hibernate.Query; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class NewsDAOImpl extends HibernateDaoSupport implements NewsDAO {
public boolean doInsert(News news) throws Exception { // TODO Auto-generated method stub this.getSession().save(news); return true; }
public boolean doRemove(int id) throws Exception { // TODO Auto-generated method stub this.getSession().delete(findById(id)); return true; }
public boolean doUpdate(News news) throws Exception { // TODO Auto-generated method stub this.getSession().update(news); return true; }
public List<News> findAll() throws Exception { // TODO Auto-generated method stub return this.getSession().createCriteria(News.class).list(); }
public List<News> findAll(int cp, int ls, String keyword) throws Exception { // TODO Auto-generated method stub String hql="FROM News WHERE title=? OR abstractnote=? OR content=?"; Query q=this.getSession().createQuery(hql); q.setString(0, "%"+keyword+"%"); q.setString(1, "%"+keyword+"%"); q.setString(2, "%"+keyword+"%"); return q.list(); }
public News findById(int id) throws Exception { // TODO Auto-generated method stub return (News)this.getSession().get(News.class, id); }
public int getAllCount() throws Exception { // TODO Auto-generated method stub String hql="SELECT count(*) FROM News"; Query q=this.getSession().createQuery(hql); List all=q.list(); int count=0; if(all!=null && all.size()>0){ count=((Long)all.get(0)).intValue(); } return count; } }
|
继承的类中定义sessionfactory属性,需要使用Spring进行注入
将实现类配置到Spring管理中
<bean id="newsdaoimpl" class="mldn.lin.dao.impl.NewsDAOImpl"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> |
编写测试类进行测试
package mldn.lin.test;
import mldn.lin.dao.NewsDAO;
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test { public static void main(String[] args){ ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); NewsDAO newsdao=(NewsDAO) ctx.getBean("newsdaoimpl");
try { System.out.println(newsdao.getAllCount()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
} }
|
继承HibernateDaoSupport,并通过Spring注入了SessionFactory,使用该方法对于c3p0的连接池,可以直接通过getSession 进行处理,但如果使用common-pool的连接池则还需要手工关闭连接。
第三种方法:使用HibernateTemplate类
实现类:
package mldn.lin.dao.impl;
import java.sql.SQLException; import java.util.List;
import mldn.lin.dao.NewsDAO; import mldn.lin.pojo.News;
import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class NewsDAOImpl extends HibernateDaoSupport implements NewsDAO {
public boolean doInsert(News news) throws Exception { // TODO Auto-generated method stub this.getHibernateTemplate().save(news); return true; }
public boolean doRemove(int id) throws Exception { // TODO Auto-generated method stub this.getHibernateTemplate().delete(findById(id)); return true; }
public boolean doUpdate(News news) throws Exception { // TODO Auto-generated method stub this.getHibernateTemplate().update(news); return true; }
public List<News> findAll() throws Exception { // TODO Auto-generated method stub return this.getHibernateTemplate().find("FROM News"); }
public List<News> findAll(final int cp, final int ls, final String keyword) throws Exception { // TODO Auto-generated method stub List all = this.getHibernateTemplate().executeFind( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { // TODO Auto-generated method stub // 直接编写查询方法 Query q = session.createQuery("FROM News WHERE title=? OR abstractnote=? OR content=?"); q.setFirstResult((cp - 1)* ls); q.setMaxResults(ls); q.setString(0, "%"+keyword+"%"); q.setString(1, "%"+keyword+"%"); q.setString(2, "%"+keyword+"%"); return q.list(); } }); return all;
}
public News findById(int id) throws Exception { // TODO Auto-generated method stub return (News) this.getHibernateTemplate().get(News.class, id); }
public int getAllCount() throws Exception { // TODO Auto-generated method stub List all=this.getHibernateTemplate().find("SELECT count(*) FROM News"); int count=0; if(all!=null && all.size()>0){ count=((Long)all.get(0)).intValue(); } return count; } }
|
配置Spring管理文件
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property> </bean>
<bean id="newsdaoimpl" class="mldn.lin.dao.impl.NewsDAOImpl"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate"></ref> </property> </bean>
|
编写测试类:
package mldn.lin.test;
import mldn.lin.dao.NewsDAO;
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test { public static void main(String[] args){ ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); NewsDAO newsdao=(NewsDAO) ctx.getBean("newsdaoimpl");
// try { // System.out.println(newsdao.getAllCount()); // } catch (Exception e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } try { for (int i = 0; i < 100; i++) { System.out.println(newsdao.findAll()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
|
三、HibernateTemplate类的使用说明
HibernateTemplate是对Session操作的封装:
可以完成save()、update()、delete()所能完成的功能。
使用Query对象时,可以通过HQL的方式进行修改和删除操作
而使用HibernateTemplate可以通过bulkUpdate()来完成修改和删除功能,该方法有3个重载:
只传入一个字符串参数:直接执行该HQL语句,返回影响的记录数
传入一个HQL和一个Object参数:当HQL中只有一个?参数时,使用该方法可以为参数赋值,并执行修改或删除。
传入一个HQL和一个Object[]参数:当HQL中包含多个?参数时,使用该方法,按顺序为?赋值
public boolean doRemove(int id) throws Exception { // TODO Auto-generated method stub String hql = "DELETE FROM News AS n WHERE n.id = ?" ; if (this.getHibernateTemplate().bulkUpdate(hql,id) > 0) { return true ; } return false; } |
完成查询功能时:
查询全部(不包含参数的查询):可以使用 find方法进行查询,将HQL语句传入,返回List类型
public List<News> findAll() throws Exception { // TODO Auto-generated method stub return this.getHibernateTemplate().find("FROM News"); } |
如果包含?参数,则与bulkUpdate相同,可以通过传入Object参数或Object数组参数来进行处理。
public List<News> findAll() throws Exception { // TODO Auto-generated method stub return this.getHibernateTemplate().find("FROM News WHERE id = ?",3); }
|
如果HQL中使用的是:参数时,可以通过findByNamedParam进行查询。
后面的两个数组参数分别表示参数名和参数值,注意需要一一对应。
public List<News> findAll() throws Exception { // TODO Auto-generated method stub return this.getHibernateTemplate().findByNamedParam( "FROM News WHERE id = :id", "id", 3); } |
当对主键进行查询时,可以使用get方法进行处理,使用的方法与session.get完全相同。
完成分页查询
可以使用findByCriteria或findByExample,但这两个方法不是很灵活,如果要使用HQL方式进行查询
可以通过使用execute或executeFind方法 ,自行编写被封装的session操作,但需要使用匿名内部类:
public List<News> findAll(final int cp,final int ls) throws Exception { // TODO Auto-generated method stub List all = this.getHibernateTemplate().executeFind( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { // TODO Auto-generated method stub // 直接编写查询方法 Query q = session.createQuery("FROM News"); q.setFirstResult((cp - 1)* ls); q.setMaxResults(ls); return q.list(); } }); return all; } |
需要声明一个HibernateCallback对象,并在内部类中实现doInHibernate方法,在该方法中完成对session的操作,如果需要调用外部类的属性,注意要将属性设置成为final。
除了分页以外,还有一种情况需要使用内部类来完成查询:
当出现延迟加载问题时,需要在内部类中调用级联查询(因为只有在内部类中session并不会关闭)。
当使用HibernateTemplate查询返回数字或数组(带有select关键字的HQL),返回的数字类型为Long或Double。
public int getAllCount() throws Exception { // TODO Auto-generated method stub List all = this.getHibernateTemplate() .find("SELECT count(*) FROM News"); if (all != null && all.size() > 0) { return ((Long) all.get(0)).intValue(); } return 0; } |
四、SSH联合开发
建立项目,加入支持
加入支持的顺序:
Spring à Hibernate 或 Struts
注意,多加入了Spring对web的支持jar包
完成后台代码
编写接口和实现类,并将HibernateTemplate和实现类配置到applicationContext.xml中
<!-- 定义HibernateTemplate的Bean --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property> </bean>
<bean id="newsdaoimpl" class="org.liky.dao.impl.NewsDAOImpl"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate"></ref> </property> </bean> |
编写页面代码,建立连接,完成列表显示
<center> <a href="news.do?status=list">列表</a> </center> |
建立Struts的Action与ActionForm
package org.liky.struts.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import org.liky.dao.NewsDAO; import org.liky.struts.form.NewsForm;
public class NewsAction extends DispatchAction {
private NewsDAO newsdao;
public ActionForward list(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { NewsForm newsForm = (NewsForm) form;// TODO Auto-generated method stub
List all = null; int allRecorders = 0; try { all = this.newsdao.findAll(newsForm.getCp(),newsForm.getLs()); allRecorders = this.newsdao.getAllCount(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } request.setAttribute("all", all); request.setAttribute("allRecorders", allRecorders); request.setAttribute("cp", newsForm.getCp()); request.setAttribute("ls", newsForm.getLs());
return mapping.findForward("list"); }
public void setNewsdao(NewsDAO newsdao) { this.newsdao = newsdao; } } |
在Spring中加入Action的Bean配置
<bean id="newsaction" class="org.liky.struts.action.NewsAction"> <property name="newsdao"> <ref bean="newsdaoimpl"></ref> </property> </bean> |
显示所有数据
<center> <logic:iterate id="news" name="all" scope="request"> ${news.title } -- ${news.postDate } <br> </logic:iterate> </center> |
将commons-pool.jar拷贝到项目中
运行后发现出现空指针异常,newsdao没有被初始化,原因是由于Struts的Action本身是由struts-config.xml中的type中设置的类型进行创建,创建方式为Class.forName(包.类名).newInstance()。而没有用到Spring。
需要在struts-config.xml中,加入以下配置:
加入一个spring的插件
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/> </plug-in> |
该配置是为了在读取struts-config.xml时,可以找到spring的配置文件,用来创建Spring对象
还需要设置一个controller类,在读取action配置时,使ActionServlet改为通过Spring创建Action对象,而不是直接创建。
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"> </controller> |
该配置可以在读取Action 时,先在spring的配置文件中查找是否有与该action对应的Bean,如果有,则使用spring进行创建,如果没有,需要通过new的方式直接创建。
修改spring中对于action的bean配置,spring与struts在查找对应关系时,通过path路径进行查找
<bean name="/news" class="org.liky.struts.action.NewsAction"> <property name="newsdao"> <ref bean="newsdaoimpl"></ref> </property> </bean> |
以上配置完成后,启动服务器测试
发现出现404错误,而且控制台没有错误信息提示。
将log4j.properties加入到项目中
发现启动时出现了找不到方法的异常
原因在于asm-2.2.3.jar与asm.jar有冲突,其中观察方法的参数,发现asm.jar为需要用的jar包,应该删除asm-2.2.3.jar包
补充:使用hibernate缓存
修改applicationContext.xml中sessionFactory的hibernate属性配置,加入使用二级缓存
<property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </prop> <prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.cache.use_second_level_cache"> true </prop> </props> </property> |
修改hbm.xml,加入使用缓存的方式
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="org.liky.pojo.News" table="news" catalog="testdb"> <cache usage="read-only"/> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="native" /> </id> <property name="title" type="java.lang.String"> <column name="title" length="20" not-null="true" /> </property> <property name="keyword" type="java.lang.String"> <column name="keyword" length="10" not-null="true" /> </property> <property name="content" type="java.lang.String"> <column name="content" length="65535" not-null="true" /> </property> <property name="postDate" type="java.util.Date"> <column name="post_date" length="19" not-null="true" /> </property> </class> </hibernate-mapping>
|
加入ehcache.xml
<ehcache>
<!-- 表示缓存文件所保存的临时路径,java.io.tmpdir表示JDK所临时保存文件的路径 --> <diskStore path="java.io.tmpdir"/>
<!-- 以下为默认缓存配置,如果没有进行单独的配置,使用该配置进行缓存的保存:
maxInMemory - 设置内存中可以创建pojo数据的最大数量(针对一个pojo) eternal - 设置缓存中的数据是否永久存在.如果为true, 当超过时间后,数据也不销毁. timeToIdleSeconds - 设置从缓存对象创建后经过多长时间自动销毁. 只有当eternal为false时才可以使用. 单位为秒 timeToLiveSeconds - 设置缓存对象经过一次查询后,多长时间不再被查询后自动销毁(闲置时间). overflowToDisk - 如果为true,则当数据数量超出范围后(InMemory中的范围)后,是否保存到硬盘上(保存的位置在上面的diskStore中定义).
--> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="120" overflowToDisk="true" />
</ehcache>
|
在调用查询前需要设置是否使用缓存操作
在spring中,这个设置可以在配置文件中完成
<!-- 定义HibernateTemplate的Bean --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="cacheQueries"> <value>true</value> </property> <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property> </bean> |
修改HibenateTemplate的配置,加入使用缓存的设置属性,值为true
删除项目中的ehcache-1.1.jar包
发表评论
-
本小姐回来啦 —— 超级感谢MLDN
2009-08-10 13:24 1600我又回来了!哈哈,报告一个好消息,我已经成功入职博彦科 ... -
现在开始积极的找工作
2009-07-05 19:13 1176学习差不多了,得赶在毕业前找到一个工作啊,本小姐这段时 ... -
素质教育 —— 模拟面试
2009-06-30 19:10 1043今天一天都安排了职业素质的培养,包括简历的指导、技术面 ... -
EJB实体Bean开发的复合主键映射
2009-06-29 21:36 1686复合主键的映射:在Hibernate中是通过一个主键类来完成复 ... -
EJB实体Bean开发
2009-06-29 21:33 990EJB实体Bean开发的数据库连接采用数据源连接池的方式,因此 ... -
EJB3.0
2009-06-28 14:14 1233EJB是SUN公司提出的开发 ... -
JBoss服务器配置
2009-06-25 21:21 2079哦,哦,哦,EJB的准备课程啊。 这里开发使用的是 JB ... -
Spring结合iBATIS进行开发
2009-06-25 21:19 961使用Spring管理iBATIS完全可以参照Spring+Hi ... -
ibatis开发框架
2009-06-25 21:17 1258iBATIS为一个ORMapping框架,可以帮助开发人员完成 ... -
WebService分布式开发
2009-06-24 22:23 1906WebService:用来跨语言传递数据。 数据交互是通过XM ... -
北京下雨了
2009-06-18 19:56 772上次在公交车上,听到电视里放《北京下雨了》,那么北京今天 ... -
JQuery
2009-06-10 21:03 12611、JQuery的基本语法 ... -
AJAX中使用JSON
2009-06-10 21:02 1303在Java开发中,如果要使用JSON进行开发,需要一些支持,这 ... -
AJAX框架 —— JSON基本知识
2009-06-10 21:01 944我真想知道这年头到底有多少种框架。 1、JSON ... -
还应该多帮助同学,才能让自己进步快
2009-06-08 21:57 988今天对于本小姐来讲还真是相对轻松的一天啊,上周完成了任 ... -
业务、业务、业务。。。
2009-06-03 18:41 1142项目就是业务,项目中都是业务,技术就这么点东西,只要把 ... -
IBM Project 继续中ing....
2009-06-02 19:08 873项目就是要坚持的做下去,而且要想到做到最好,虽然框架很好 ... -
实际开发了
2009-06-01 18:17 879今天开始新的项目了,项目老师帮我们搭建好了SVN服务器, ... -
web学习笔记 —— 数据源
2009-05-31 19:56 1021使用数据源可以提升数据库的操作性能,当然,不管使用与否,对于程 ... -
Spring中的控制反转(IOC)
2009-05-30 16:29 777什么控制反转,还弄了一个新名词 —— ioc,说白了就 ...
相关推荐
library_ssh2可能是一个包含系统源代码的压缩文件,"ssh2"可能表示系统使用了Struts2、Spring2和Hibernate2这三个框架的早期版本。这个文件中应包含所有必要的Java源代码、配置文件、Web应用相关的资源(如JSP页面、...
### SSH框架整合详细步骤(spring+struts2+hibernate) #### 一、整合概述 在现代Web应用开发中,SSH(Struts2、Spring、Hibernate)框架因其各自独特的功能和优势,常被组合使用以构建高效、稳定且易于维护的系统...
在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...
SSH (Spring+Struts2+Hibernate)整合步骤纯手写
Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate(一步一步的教你敲代码)(博客园,博客名称:Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate)
"Spring+Struts+Hibernate"(SSH)框架是Java Web开发中的经典组合,被誉为"三剑客"。这个框架集合提供了全面的企业级应用解决方案,帮助开发者构建高效、可扩展且易于维护的Web应用程序。 Spring框架是核心,它...
综合以上所述,这本“java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax”涵盖了JSP和Servlet作为Web基础技术的知识,以及Struts 2、Spring、Hibernate三个主流的SSH框架,并且提供了Ajax技术的应用...
SSH项目是一种经典的Java Web开发框架组合,由Spring、Hibernate和Struts2三个开源框架组成。这个项目示例提供了一个基于这些技术的简单应用,帮助开发者理解如何将它们整合在一起进行实际开发。 **Spring框架**是...
基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh...
需要自己下载,如果有问题,请联系我,我会尽快解决,谢谢大家的支持
标题 "spring+hibernate+struts" 指涉的是一个经典的Java Web开发框架组合,也被称为SSH(Spring、Struts和Hibernate)三位一体。这个组合在2000年代中期到后期非常流行,用于构建企业级应用。下面将详细阐述这三个...
【标题】"超市管理信息系统(SSH struts+spring+hibernate)"是一个综合性的IT项目,它基于流行的Java企业级开发框架SSH(Struts、Spring、Hibernate)来构建。SSH框架是许多大型企业级应用的首选,因为它提供了一个...
此为我本人对SSH(spring+struts+hibernate)学习之后的心得,自己写的一个简单的基于SSH(spring+struts+hibernate)框架开发的小例子,里面有完成的源码,简单易懂,适合初学者。希望大家共同学习!
最简单的Spring+Struts2+Hibernate整合例子,MySql数据库,IDE是JavaEE版的Eclipse,tomcat7.0 ,实现功能:登录+注册+增删改查+一键清空数据库表的数据。所有jar文件都在里面了。
SSH框架,全称为Spring、Struts2和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,数据库持久化,以及强大的前端展示能力,使得开发者能高效地构建...
SSH2整合指的是Spring、Struts2和Hibernate三个开源框架的集成应用。这三大框架分别负责不同的职责:Spring作为基础架构框架,提供依赖注入(DI)和面向切面编程(AOP),Struts2则用于MVC(Model-View-Controller)...
(2)运用struts1.2+hibernate+spring 框架,数据库连接池,事务管理; (3)Struts 应用国际化,Struts 标签库与Tiles框架, JSTL标签库,Spring IOC; (4)采用优化性能技术,采用oscache缓存,freemarker静态页面生成; (5)...
SSH,全称是Struts2、Spring和Hibernate,是一种经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。这个项目集成了这三个开源框架,以实现模型-视图-控制器(MVC)设计模式,提供数据持久化、依赖...
SSH(Spring、Struts、Hibernate)是Java Web开发中经典的三大框架组合,它们各自负责不同的职责,协同工作以实现高效的企业级应用。Spring是全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP),用于...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个实例是为初学者设计的,通过MyEclipse集成开发环境,详细介绍了如何将这三大框架整合到一个登录工程中。下面将详细...