首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

HibernateTemplate施用

2012-08-25 
HibernateTemplate使用HibernateTemplate提供持久层访问模板化,使用HibernateTemplate无须实现特定接口,它

HibernateTemplate使用
HibernateTemplate提供持久层访问模板化,使用HibernateTemplate无须实现特定接口,它只需要提供一个SessionFactory的引用,就可执行持久化操作。SessionFactoyr对象可通过构造参数传入,或通过设值方式传入。如下:

//获取Spring上下文

ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");

//通过上下文获得SessionFactory

SessionFactory sessionFactory = (SessionFactory) ctx.getBean(“sessionFactory”);

然后创建HibernateTemplate实例。HibernateTemplate提供如下三个构造函数

q      HibernateTemplate()

q      HibernateTemplate(org.hibernate.SessionFactory sessionFactory)

q      HibernateTemplate(org.hibernate.SessionFactory sessionFactory, boolean allowCreate)

第一个构造函数,构造一个默认的HibernateTemplate实例,因此,使用HibernateTemplate实例之前,还必须使用方法setSessionFactory(SessionFactory sessionFactory)来为HibernateTemplate传入SessionFactory的引用。

第二个构造函数,在构造时已经传入SessionFactory引用。

第三个构造函数,其boolean型参数表明:如果当前线程已经存在一个非事务性的Session,是否直接返回此非事务性的Session。

对于在Web应用,通常启动时自动加载ApplicationContext,SessionFactory和DAO对象都处在Spring上下文管理下,因此无须在代码中显式设置,可采用依赖注入解耦SessionFactory和DAO,依赖关系通过配置文件来设置,如下所示:

<?xml version="1.0" encoding="gb2312"?>

<!--  Spring配置文件的DTD定义-->

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd">

<!--  Spring配置文件的根元素是beans-->

<beans>

         <!--定义数据源,该bean的ID为dataSource-->

         <bean id="dataSource" class="lee.PersonDaoImpl">

           <!--  采用依赖注入来传入SessionFactory的引用>

           <property name="sessionFactory"><ref local="sessionFactory"/></property>

</bean>

</beans>

DAO实现类中,可采用更简单的方式来取得HibernateTemplate的实例。代码如下:

public class PersnDAOImpl implements PersonDAO

{

    //以私有的成员变量来保存SessionFactory。

private SessionFactory sessionFactory;

         //设值注入SessionFactory必需的setter方法

    public void setSessionFactory(SessionFactory sessionFactory)

{

           this.sessionFactory = sessionFactory;

    }



    public List loadPersonByName(final String name)

{

           HibernateTemplate hibernateTemplate =

                    new HibernateTemplate(this.sessionFactory);

                   //此处采用HibernateTemplate完成数据库访问

    }

}

热点排行