首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

用hibernate跟spring整合做小例子对数据库增删改查

2012-10-12 
用hibernate和spring整合做小例子对数据库增删改查注意:先添加hibernate能力,再添加spring能力,最后逆向数

用hibernate和spring整合做小例子对数据库增删改查
注意:先添加hibernate能力,再添加spring能力,最后逆向数据库

一.配置applicationContext.xml

1.

<?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.5.xsd">


2.管理sessionFactory:(创建SessionFactory 实例)

  <bean id="sessionFactory"
  encoding="gb2312"?>
<!--Spring配置文件的DTD定义--〉
<!DOCTYPE beans PUBLIC"-//SPRiNG//DTDBEAN//EN"
''http://www.springframework.org/dtd/spring-beans.dtd">
<!--Spring配置文件的根元素是beans-->
<beans>
<!--定义数据源,该bean的 ID 为 dataSource-->
<bean id="dataSource" />
   </property>
   </bean>

创建 Configuration 实例:Configuration用于配置并启动Hibernate。Hibernate应用通过Configuration的实例来指定对象-关系映射文件,或通过Configuration动态配置Hibernate的属性,然后通过Configuration来创建相应的SessionFactory实例。

4.创建 Session 实例
<bean id="wj" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

从SessionFactory中可以获得Session实例。

Session接口是Hibernate应用中使用最广泛的接口了,它是持久化管理器,提供添加、更新、删除、加载、查询对象。Session不是线程安全的,所以应避免多个线程共享同一个Session实例。Session是轻量级对象,它的创建和销毁不需要太多资源,这意味着在应用中可以经常创建和销毁Session对象。

Session有一个缓存,称之为Hibernate的一级缓存,它存放当前工作单元加载的持久化对象,每个Session都有自己的缓存,缓存中的对象只能被当前工作单元访问。

5.TUserDAO的代理类
<bean id="TUserDAOProxy"  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyTargetClass"><value>true</value></property>

6.Transaction接口(打开事务;开始持久化访问;提交事务;如果遇到异常,回滚事务; 关闭Session)

Transaction是Hibernate的数据库事务接口,它对底层道德事务接口进行了封装,底层事务接口包括:

    JDBC API

    JTA(Java Transaction API)

    CORBA(Common Object Requet Broker Architecture) API

Hibernate应用可以通过一致Transaction接口来声明事务边界,这有助于应用可以在不同的环境或容器中移植。具体的事务实现使用在Hibernate.properties中进行指定。


<property name="transactionManager">
<ref bean="wj"/>//session实例
</property>
<property name="target">//联系DAO和代理类
<ref local="TUserDAO"/></property>
<property name="transactionAttributes">//使具有什么功能
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>//需要事务支持

<!--   

<prop key="attach*">PROPAGATION_REQUIRED</prop>

<prop key="insert*">PROPAGATION_REQUIRED</prop>   插入

<prop key="save">PROPAGATION_REQUIRED</prop>   保存

<prop key="update*">PROPAGATION_REQUIRED</prop>  更新

<prop key="merge.*">PROPAGATION_REQUIRED</prop>更新

<prop key="edit*">PROPAGATION_REQUIRED</prop>  

<prop key="del*">PROPAGATION_REQUIRED</prop>  删除

<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  

<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>  

<prop key="disPlay*">PROPAGATION_REQUIRES_NEW</prop> 

<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="create*">PROPAGATION_REQUIRED,-Exception</prop>



  -->
</props>
</property>
</bean>
</beans>

7.Query和Criteria接口

这两个是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。Query实例包装了一个HQL(Hibernate Query Language)来查询。Criteria接口完全封装了基于字符串形式的查询语句,比Query更面向对象,Criteria更擅长执行动态查询

二.测试类

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import userHib.TUser;
import userHib.TUserDAO;


public class Test {

/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  ApplicationContext ac=new ClassPathXmlApplicationContext("ApplicationContext.xml");
  TUserDAO td=(TUserDAO)ac.getBean("TUserDAOProxy");
  TUser user=td.findById("2");//查询
  System.out.print(user.getPassword());
  TUser user1=new TUser();
  user1.setUserId("11");
  user1.setUserName("11");
  user1.setPassword("11");
  td.save(user1);//增加
  TUser user2=td.findById("3");
  td.delete(user2);//删除
  TUser user3=td.findById("4");
  user3.setUserName("5");
  user3.setPassword("5");
  td.merge(user3);//更改
}

}

热点排行