Spring中的数据访问使用Hibernate

Spring中的数据访问


不管使用哪种DAO技术,Spring提供了统一的异常处理机制。
使用O/R Mapping的访问框架中的模版(HibernateTemplate),开发者无需考虑是否要处理异常,
因为SpringDAO代劳了这些工作。

HibernateDaoSupport:Hibernate DAO抽象类,开发者需要为他配置Hibernate SessionFactory。
通过注入的方式实现。通过HibernateDaoSupport之类,可以获得HibernateTemplate.
Spring中的所有模版类都是线程安全的包括(HibernateTemplate)

定义Hibernate资源
使用JNDI 或者是 DBCP 配置数据源




(1)想要直接使用HibernateTemplate,必须先在DAO对象中定义sessionFactory,
然后注入sessionFactory ,在相应的DAO对象里定义sessionFactory变量,以及他的
Setter方法。

最后,开发者实现HibernateTemplate调用过程时,需要实现HibernateCallback回调接口。
可以发现,这种回调实现能够实现基于Hibernate的DAO访问。
与此同时,HibernateTemplate能够保证正确的打开和关闭HibernateSession,并自动参与到
事务当中。HibernateTemplate是线程安全的,对于简单的Hibernate操作,比如单个find,
saveOrUpdate操作,直接使用HibernateTemplate比较有效率。

(2)还可以让DAO实现HibernateDaoSupport接口 ,但这样使得Hibernate与Spring的耦合度增加

在处理简单的数据库操作时,使用HibernateTemplate带的find(),save()等的方法效率更好。
如果处理比较复杂的操作时(比如分页)可以使用hibernate的回调接口

List bookList =(List) getHibernateTemplate().execute(new HibernateCallback(){
            public Object doInHibernate(Session session)throws HibernateException,SQLException{
                 Query query = session.createQuery("From Book as b left join fetch  b.category ")
                        .setFirstResult(startRow)
                        .setMaxResults(maxResults);
                 
                return query.list();
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值