使用Hibernate 和 Spring 实现一个事务持久层

转载 2005年03月21日 19:34:00
 

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&amp;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 容器中运行,也可以单独运行.

Java事务管理之Spring+Hibernate

环境与版本除了上一篇中的hibernate的相关lib 外 Java事务管理之Hibernate还需要加入Spring的lib 包和如下的一些依赖包org.aopallianceorg.aspectj...
  • oscar999
  • oscar999
  • 2017年02月16日 17:32
  • 1093

使用SPRING+HIBERNATE 控制事务

使用Spring集成Hinernate按照从下向上方法建立 1.Hibernate对应的Dao层集成HibernateDaoSupport这个类,这个类是 Spring对Hibernate的集...
  • a6697238
  • a6697238
  • 2016年01月12日 19:57
  • 1872

Spring的事务和Hibernate的事务有什么区别

Question: 想了解一下Spring的事务和Hibernate的事务有什么区别?Hibernate的crud都用到了Transaction,在方法开始时,打开事务,然后结束时提交事务,当Hb与...
  • bigtree_3721
  • bigtree_3721
  • 2016年05月19日 01:02
  • 1147

对Spring对Hibernate事务管理的简单理解

在谈Spring事务管理之前我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的。在Hibernate中我们每次进行一个操作的的时候我们都是要先开启事务,然后进行数据...
  • sunny_sxylj
  • sunny_sxylj
  • 2016年03月28日 20:48
  • 930

Hibernate持久层(原理、基本流程)

Hibernate持久层 Java中对象的持久化有3种方式: (1)序列化对象,存到格式化的文本中; (2)将对象持久化到XML文档中; (3)持久到数据库中,一般指关系型数据库。   以...
  • Songjs19931206
  • Songjs19931206
  • 2015年08月16日 12:28
  • 1794

不明觉厉的spring(4)---spring对持久层(jdbc,hibernate)以及事务的支持

Spring对持久层的支持 ① JDBC,② O/R Mapping(Hibernate,TopLink等) Spring对持久层支持采用的策略:   1、Spring对持久层“不发明重复的轮子”,即...
  • Senssic
  • Senssic
  • 2013年10月15日 23:45
  • 2945

Spring,Hibernate,Mybatis,JDBC事务之间的的关系

Spring,Hibernate,Mybatis,JDBC事务之间的的关系
  • zhangming1013
  • zhangming1013
  • 2015年03月25日 11:32
  • 2479

Spring整合Hibernate管理事务(xml配置方式)

之前是刚开始使用Spring的事务管理,采用比较简单方便的注解方式进行事务处理,而注解方式进行事务处理需要在每一个要实现事务的类上添加@Transactional注解,在比较小的项目中可以这样来用。但...
  • Julyraining
  • Julyraining
  • 2015年12月09日 16:30
  • 343

spring、hibernate事务管理的区别及整合方式

原文地址:点击打开链接 在谈Spring事务管理之前我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的。在Hibernate中我们每次进行一个操作的的时候我们...
  • u010921701
  • u010921701
  • 2017年02月20日 17:28
  • 423

spring 同时配置hibernate and jdbc 事务

在项目中同时用到了JDBC和Hibernate,分别配置了各自的事务,同时配置了不同的tx:annotation-driven。 但是在实际使用中,只有配置在前的tx:annotation-driv...
  • zdwzzu2006
  • zdwzzu2006
  • 2017年05月17日 16:18
  • 745
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Hibernate 和 Spring 实现一个事务持久层
举报原因:
原因补充:

(最多只允许输入30个字)