关于spring整合hibernate的一些概念

最近初学spring,整合hibernate遇到了种种问题,包括sessionfactory 的注入;

(1):spring 的自带的 实现sessionfactory接口的类AnnotationSessionFactoryBean(其实源代码中并没有实现此接口,但是sessionfactory的方法初始化的时候被动态切入到此类当中),beans.xml 如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" 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的。
======================================================================

待续 ,继续学习补充中 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值