读书人

Spring数据库访问之ORM(3)

发布时间: 2012-08-28 12:37:01 作者: rapoo

Spring数据库访问之ORM(三)
本文接上一篇继续研究。
之前我们使用的是HibernateTemplate来进行对象的持久化的,其实在DAO实现类中我们还可以使用Hibernate的上下文Session来持久化对象。也就是通过SessionFactory对象的getCurrentSession()对象来获得Session,然后通过Session来进行操作。
我们调整一下代码:


这样,基于上下文Session的持久化对象就配置完毕了,在示例程序中来执行,就会看到效果。修改测试程序如下:

这种方式和使用HibernateTemplate有的不同是它们对异常的处理。HibernateTemplate会将异常统一翻译成Spring的数据访问异常体系中的某个异常,而我们使用上下文的Session时,抛出的就不是Spring的异常,而是HibernateException,如果我们还想看到Spring的异常体系,就需要做点设置,当然这也很简单。
在DAO实现类上加@Respository注解,并且注册一个PersistenceExceptionTranslationPostProcessor实例即可。在Spring的配置文件中,我们加入如下内容:

之后,将测试程序中的getBean()换成courseDaoJPA即可。
和HibernateTemplate一样,JpaTemplate也会将异常翻译为Spring的数据访问异常,而如果改成entityManagerFactory之后,异常就会变成Java SE的异常,比如非法参数,非法状态等异常。若要继续使用Spring的异常体系,那么要为JPA的DAO实现类加上@Repository注解,然后注册PersistenceExceptionTranslationPostProcessor实例。
至此,我们的Spring的ORM部分已经全部介绍完了,源代码随附件发布。后续将介绍Spring对iBatis的支持。

读书人网 >其他数据库

热点推荐