Spring和hibernate整合

来源:互联网 发布:膝盖骨刺用什么药 知乎 编辑:程序博客网 时间:2024/06/05 16:19
1.新建数据源 在applicationContext.xml的右边对话框内选择右键,可以填写内容自动生成数据源,<bean id="dataSource">是下面<ref local="dateSource" />
2.找到项目的属性,选择添加库,找到MyEclipse的库,找到Spring ORM/DAO/Hibernate
3.装载Dao内,设置属性,并增加set和get函数
private DateSource dateSource;
4.在applicationContext.xml的Dao内增加
<property name="dataSource">
<ref local="dateSource" />
</property>
5.conn=dataSource.getConnection();
========================================================================
提供模板配置JDBC
JdbcTemplate
1.JdbcTemplate jt = new JdbcTemplate(dataSource);
2.List list = jt.queryForList(sql);//list内放的是每一个学生都是一个元素放入HashMap,List内存HashMap
3.可以用Struts的logic标签遍历
<logic:iterate id="stu" name="stus">
<tr>
<logic:iterate id="content" name=stu">
<td><bean:write name="content" property="value"/></td>
</logic:iterate>
</tr>
</logic:iterate>
========================================================================
取消数据源的编写
JdbcDaoSupport
1.StudentDao extends JdbcDaoSupport
2.JdbcTemplate jt = this.getJdbcTemplate();
========================================================================
Spring和hibernate整合
!!!注意转码,可以自定义转码列!!!
1.增加Hibernate框架,最好不选择和Spring配置文件整合,把配置文件放入WEB-INF文件夹内
选择手动添加SessionFactory,并检查application内无sessionFactory
2.创建htm.xml并注册到Hibernate的xml文件内
3.新建SessionFactory 在applicationContext.xml的右边对话框内选择右键,可以填写sessionFactory内容自动生成数据源
Bean Id:sessionFactory
Hibernate Config:/WEB-INF/hibernate.cfg.xml
<beans>
<bean id="sdao" class="dao.StudentDao">
</bean>
<bean name="/query" class="Prj24_3.action.QueryAction">
<property name="isdao">
<ref local="sdao"/>
</property>
</bean>




<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>/WEB-INF/hibernate.cfg.xml</value>
</property>
</bean></beans>


4.在Dao内写SessionFactory并增加set和get函数
private SessionFactory sessionFactory;(hibernate)
public List queryStuByName(String sname) {
// TODO Auto-generated method stub
// String sql="SELECT * FROM T_XUEJI WHERE NAME LIKE '%" + sname + "%'";
String hql="FROM Student WHERE stuName like '%" + sname + "%'";
HibernateTemplate ht = new HibernateTemplate(sessionFactory);(org.springframework.orm.hibernate3.HibernateTemplate)
List list = ht.find(hql);
return list;
}
5.把SessionFactory装配到applicationContext.xml
<bean id="sdao" class="dao.StudentDao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
6.在applicationContext.xml的Dao内增加
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
7.在前台页面增加Struts的taglib标签,因为是List所以遍历为
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<table>
<logic:iterate id="stu" name="stus">
  <tr>
  <td><bean:write name="stu" property="stuId"/></td>
  <td><bean:write name="stu" property="stuName"/></td>
  <td><bean:write name="stu" property="stuSex"/></td>
  <td><bean:write name="stu" property="stuBir"/></td>
  <td><bean:write name="stu" property="stuAdd"/></td>
</tr>
  </logic:iterate>
</table>
******************************************************************************
8.优化
StudentDao继承HibernateDaoSupport(org.springframework.orm.hibernate3.)
StudentDao内删除SessionFactory并只剩下如下:
public List queryStuByName(String sname) {
// TODO Auto-generated method stub
String hql="from Student where stuName like '%" + sname + "%'";
HibernateTemplate ht = this.getHibernateTemplate();
List stus = ht.find(hql);
return stus;
}


******************************************************************************
如果增删改 利用HibernateTemplate获取链接,并编码
或者在Spring的applicationContext内配置事务