1.首先实现一个接口.
============================================================
package com.cqtele.tnbos;import java.util.*;public interface iuserdao { public void insertuser(userinfo user); public list finduser(string sql);}
==============================================================
2. 实现这个接口.
这里使用 spring的 aop-driven hibernatetemplate 简化 hibernate 会话的处理.
================================================================package com.cqtele.tnbos;import java.util.*;
import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;import java.io.serializable;import org.springframework.orm.hibernate.*;//.hibernatecallback;import org.springframework.orm.hibernate.support.hibernatedaosupport;
public class userdao extends hibernatedaosupport implements iuserdao{ //public list name=null; //session session; private list list=null; public void insertuser(userinfo user) { gethibernatetemplate().saveorupdate(user); } public list finduser(string sql) { return gethibernatetemplate().find(sql); }}
=================================================================
3.声明式管理事务.
bean.xml
==========================================================================
<?xml version="1.0" encoding="utf-8"?> <!doctype beans public "-//spring/dtd bean/en" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans> <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname"> <value>com.mysql.jdbc.driver</value> </property> <property name="url"> <value>jdbc:mysql://127.0.0.1:3306/opertselect?useunicode=true&characterencoding=gbk</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value></value> </property> </bean> <bean id="sessionfactory" class="org.springframework.orm.hibernate.localsessionfactorybean"> <property name="datasource"> <ref local="datasource" /> </property> <property name="mappingresources"> <list> <value>userinfo.hbm.xml</value> <!–value>fruits.hbm.xml</value–> </list> </property> <property name="hibernateproperties"> <props> <prop key="hibernate.dialect"> net.sf.hibernate.dialect.mysqldialect </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <bean id="transactionmanager" class="org.springframework.orm.hibernate.hibernatetransactionmanager"> <property name="sessionfactory"> <ref local="sessionfactory" /> </property> </bean> <bean id="userdao" class="com.cqtele.tnbos.userdao"> <property name="sessionfactory"> <ref local="sessionfactory" /> </property> </bean> <bean id="daoproxy" class="org.springframework.transaction.interceptor.transactionproxyfactorybean"> <property name="transactionmanager"> <ref bean="transactionmanager" /> </property> <property name="target"> <ref local="userdao" /> </property> <property name="transactionattributes"> <props> <prop key="insert*">propagation_required</prop> <prop key="get*">propagation_required,readonly</prop> </props> </property> </bean></beans>==============================================================================
4.使用.(这是关于一个购物车的例子.)==============================================================================
package com.cqtele.tnbos;
import java.util.*;import java.io.*;import org.springframework.beans.factory.beanfactory;import org.springframework.beans.factory.xml.xmlbeanfactory;import org.aopalliance.aop.advice;
public class login{ private list list=null; private string sql="from userinfo"; public list getallmessagelist() { try{ inputstream is = new fileinputstream("bean.xml"); xmlbeanfactory factory = new xmlbeanfactory(is); iuserdao user = (iuserdao)factory.getbean("daoproxy"); list = user.finduser(sql); }catch(ioexception ioe) { system.out.println("getallmessagelist ocurr error!! message: "+ioe.getmessage()); } return list; }}
======================================================================
5.总结
======================================================================
hibernate 是一种先进的 or 映射工具,而 spring 是一个 aop 框架和 ioc 容器。这两种技术的综合使用,使得开发人员可以编写媲美数据库厂商的代码,它可以在 j2ee 容器中运行,也可以单独运行.
