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

关于spring调整hibernate的一些概念

2012-08-31 
关于spring整合hibernate的一些概念最近初学spring,整合hibernate遇到了种种问题,包括sessionfactory 的注

关于spring整合hibernate的一些概念
   最近初学spring,整合hibernate遇到了种种问题,包括sessionfactory 的注入;

(1):spring 的自带的 实现sessionfactory接口的类AnnotationSessionFactoryBean(其实源代码中并没有实现此接口,但是sessionfactory的方法初始化的时候被动态切入到此类当中),beans.xml 如下:
<bean id="sessionFactory" ref="dataSource"/>
    <property name="annotatedClasses">
      <list>
        <value>com.shelley.model.User</value>
      </list>
    </property>
    <property name="hibernateProperties">
     <!--   <value>
        hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
      </value>-->
      <props>
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
      <prop key="hibernate.show_sql">true</prop>
      <!--  <prop key="hibernate.jdbc.use_get_generated_keys">false</prop>-->
      </props>
    </property>
  </bean>

对以上的配置信息中可以看到:参数1为:dataSource,即注入数据源连接池类,此类同样可以通过spring 来指定;参数2为:表映射的实体类的数组;参数3:为注入一些hibernate一些配置参数,由AnnotationSessionFactoryBean的父类中方法public void setHibernateProperties(Properties hibernateProperties) {
this.hibernateProperties = hibernateProperties;
} 来实现,是一个Properties 数据类型 。


(2):Transaction  annotation properties 主要分为propagation ,isolation,readOnly,timeout,rollbackFor,rollbackForClassname,noRollbackFor,noRollbackForClassname

properties propagation  :分为
MANDATORY,NESTED,NEVER,NOT_SUPPORTED,REQUIRED,REQUIRED_NEW,SUPPORTS

最常用的是 REQUIRED 如果当前没有Transaction ,则创建一个;REQUIRED_NEW则是直接创建新的事物,挂起当前事务。
NESTED ,嵌套事务处理,回滚到保存点操作,不常用。

properties  readOnly 不容许进行删除,插入,更新数据库的操作,一般是提高性能之用。


properties  rollbackFor  回滚原因设置,默认是RuntimeException ,一般不用设。





大多数情况下,事务管理都是XML 配置。


(3):HibernateTemplate , HibernateCallback ,HibernateDaoSupport(不重要);
  HibernateTemplate  用来简化如try catch  finally  这些代码块 ,实现类org.springframework.orm.hibernate3.HibernateTemplate  ,需要注入 SessionFactory 类。
======================================================================
   <1>设计模式: Template Method
   <2>Callback : 回调/钩子函数
    <3>第一种:(建议)
      a.在spring中初始化HibernateTemplate,注入sessionFactory
      b.DAO 里注入 HibernateTemplate
      c.save 写   hibernateTemplate.save();


可以写一个SuperDao 来注入HibernateTemplate,然后其他Dao来继承 。。。
   <4>第二种:(不常用)
      a.从HibernateDaoSupport继承
       b.必须写在XML中,无法使用Annotation,因为set方法在父类中,且是final的。
======================================================================

待续 ,继续学习补充中 。

热点排行