将Spring与Hibernate集成

为什么要将Spring与Hibernate集成?

数据库层:
与关系数据库通信;提供数据持久性。

要访问数据库中的数据,您需要实现Web 应用程序的数据库层和业务层之间的一个工具,如Hibernate。

Hibernate:
是有用的对象关系映射(ORM) 工具,即数据表与对象之间的映射工具。位于数据库层和业务层之间。
能让应用程序访问来自任何数据库的数据。
提供数据持久性。

使用Hibernate,应用程序就不需要依赖于低级别的JDBC 详细信息,例如:管理连接;处理语句和结果集。

但是Hibernate 有以下限制
访问数据库的应用程序必须依赖于Hibernate API 对象,例如:Configuration、SessionFactory和Session。
这些对象散落在应用程序的整个代码中,必须手动处理。
这些限制可以通过将Hibernate 与Spring 框架集成来消除。

Spring 框架位于应用程序类和ORM 工具之间,管理所有Hibernate 事务,使您能够使用其功能(如DI 和AOP)在应用程序中配置对象。将Hibernate 与Spring 集成有助于您Hibernate 对象作为Spring bean 使用。

下图显示了Spring 与Hibernate 的集成:

这里写图片描述


怎样将Spring与Hibernate集成?

要将Spring 与Hibernate 集成,您需要执行以下操作:

1.在Spring 中配置SessionFactory对象

当您使用独立的ORM 框架时,您必须使用其API 配置其资源工厂。
使用Hibernate 时,从本机Hibernate API 构建会话工厂对象。
Spring 通过在Spring 容器中提供多个工厂bean 来帮助您创建Hibernate 会话工厂。此会话工厂借助DI 可以在多个bean 中共享。此会话工厂可以与其他Spring 工具集成,如数据源和事务管理器。

为了在Spring 中配置会话工厂对象,需要创建Spring 配置文件。通过使用org.springframework.orm.hibernate3.LocalSessionFactoryBean类来声明会话工厂。
在声明会话工厂的同时提供Hibernate 配置文件的路径作为configLocation属性的值。

例如:

<bean id="mySessionFactory“    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--用id mySessionFactory声明会话工厂bean。-->
<property name="configLocation" value="hibernate.cfg.xml"/>
<!--将Hibernate 配置文件的位置提供为configLocation属性的值。-->
</bean>

2.使用数据访问对象(DAO) 访问和更新数据。

现在,您需要为访问和更新数据库中的数据创建DAO 类

DAO是能让您与数据库层通信的设计模式。有助于将持久性代码与应用程序逻辑分离开来,有助于创建可维护的应用程序代码,使您可以在无需改应用程序代码的情况下轻松地更改ORM 工具。

例如:

public class CourseDetailsDAO{
    private SessionFactory sessionFactory;
    .......
    public CourseDetailsDAO() {
    Configuration configuration = new Configuration().configure();}         
    ........
    Session session = sessionFactory.openSession();
    org.hibernate.Transaction tx=session.beginTransaction();
    ........
    }
return courselist;
}
}

创建了SessionFactory对象并使用该对象打开一个会话以从数据库中检索数据。

在配置文件中将DAO 类声明为bean,使其能被其他Spring bean 访问。
例如:

<bean id=" courseDetailsDao "class="university.CourseDetailsDAO">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>

将DAO 类声明为bean 之后,您现在可以访问该bean 及其方法。
例如:

ApplicationContext apc=new ClassPathXmlApplicationContext("university/spring-hibernate.xml");
CourseDetailsDAO courseDao = (CourseDetailsDAO)apc.getBean("courseDetailsDao");
List<Coursedetails> courses=new ArrayList<Coursedetails();
courses=courseDao.getcourseByName(cName);
//在您的Web 应用程序中,访问CourseDetailsDAO类的getcourseByName()方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值