Spring中让DAO层继承HibernateDaoSupport为什么不常用?

2024-11-30 06:04:41
推荐回答(4个)
回答(1):

因为如果使用继承关系的话,耦合度比较高,也就是说不够优化,并且没办法是先spring的注入,所以现在一般用的比较少。

dao层现在一般都是通过hql语言,更方便一些。
举例:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List result=session.createQuery("from Classes as a where a.classno
like " '%"+OId+"%'").list();
[sql] view plaincopyprint?
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List result=session.createQuery("from Classes as a where a.classno like " '%"+OId+"%'").list();
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List result=session.createQuery("from Classes as a where a.classno like " '%"+OId+"%'").list();

回答(2):

继承HibernateDaoSupport是可以的,但这种方式还是不太好,还是用到了继承,也就是没有降低所谓的耦合度。
解决方案:
1、spring为我们提供了一个hibernateTemplate,你只需在配置文件中配置一个bean,并传入一个sessionFactory。

2、然后在使用dao的时候注入该hibernateTemplate的bean即可。

回答(3):

没有为什么不常用,只有符合业务就行,看自己的需求定,你也可以自己创建数据库连接,这样的话,你得管理数据库连接问题,这样的后果是如果你自己开的连接没有关闭就导致程序快速出现问题。

回答(4):

不记得了,应该是线程安全问题。你查一下文档就清楚了。我也不太确定。