在applicationContext.xml文件中配置SessionFactory和dataSource的bean
2011-12-02 15:37
393 查看
在所有的ORM框架中,Spring对Hibernate的支持最好.
Spring提供很多IOC特性的支持,方便处理大部分典型的Hibernate整合问题,如:sessionFactory注入,HibernateTemplate的简化操作,及DAO支持等.
applicationContext.xml文件包含如下部分内容:
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/tenancybj" /> <property name="username" value="root" /> <property name="password" value="12345" /> </bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="myDataSource" /> <!-- 注释原因:hibernate.cfg.xml 里面已经存在 --> <!-- 取消注释原因:查询时使用了 from *** hql语句 --> <property name="mappingResources"> <list> <value>domain/UserInfo.hbm.xml</value> <value>domain/Customer.hbm.xml</value> <value>domain/SupplyMan.hbm.xml</value> <value>domain/ProType.hbm.xml</value> <value>domain/ProductParam.hbm.xml</value> <value>domain/StorageRate.hbm.xml</value> <value>domain/HireRec.hbm.xml</value> <value>domain/RepairRec.hbm.xml</value> <value>domain/SalesRec.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQLDialect </value> </property> </bean>
SessionFactory由ApplicationContext管理,并随着应用启动时自动加载,可以被处于ApplicationContext管理的任意一个Bean引用,比如DAO.
Spring采用依赖注入为DAO对象注入SessionFactory的引用;
Hibernate持久层访问步骤:
1 创建Configuration实例
2 创建SessionFactory实例
3 创建Session实例
4 打开事务
5 开始持久化访问
6 提交事务
7 遇到异常,回滚事务
8 关闭Session
Spring提供更简单的方式操作持久层,无须显式地打开Session,也无须在代码中执行任何事务操作语句.
Spring提供HibernateTemplate,用于持久层访问.
HibernateTemplate无须显式打开Session及关闭Session,它只要获得SessionFactory的引用,将可以智能打开Session,并在持久化访问结束后关闭Session,程序开发只需完成持久层逻辑,通用的操作则由HibernateTemplate完成
在DAO层的实现类中作如下操作:
private HibernateTemplate ht; private SessionFactory sessionFactory; public void save(Person person) { setHibernateTemplate(); ht.save(person); System.out.println("saved"); } public void setHibernateTemplate() { if(ht==null) ht = new HibernateTemplate(sessionFactory); } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; }
解释:定义sessionFactory,这里的实现类就不能实现HibernateDaoSupport了,因为它里面提供了sessionFactory 和HibernateTemplate的final的方法定义,就不能在子类中覆盖了。
更好的实现方式就是:继承HibernateDaoSupport。
相关文章推荐
- applicationContext.xml配置文件提示:class "org.apache.commons.dbcp.BasicDataSource" not found
- 从applicationContext.xml到beanfactiory 谈Spring从配置文件中获取bean
- 模拟Spring中applicationContext.xml配置文件初始化bean的过程
- Hibernate SQL方言 (hibernate.dialect) Spring配置文件applicationContext.xml
- Spring配置文件applicationContext.xml在myEclipse工具中编写时如何显示标签提示
- 在Spring的 applicationContext.xml文件中配置数据源
- 读取Spring的配置文件applicationContext.xml几种方法
- ClassPathXmlApplicationContext方式读取配置文件
- Hibernate与Spring整合,配置文件applicationContext.xml
- SSH整合-关于Spring中applicationContext.xml文件对于事务的一些配置
- applicationContext.xml的配置文件
- applicationContext.xml 配置文件的存放位置
- SSH整合applicationContext.xml配置文件(my project)
- spring配置文件ApplicationContext.xml里面class等没有提示功能
- Spring配置文件applicationContext.xml 找不到的问题
- 关于applicationContext.xml中的bean组件的sessionFactory
- applicationContext.xml 配置文件的存放位置
- Spring配置文件详解 - applicationContext.xml文件路径
- applicationContext.xml文件中<bean>标签中property属性用法说明
- SSM整合之applicationContext.XML配置文件详解