【讨论贴】Dao层的调用是否应该做成静态
Ant 2009-06-24 03:15:15 最近碰到一个以前没有想过的问题,觉得应该跟论坛的朋友们讨论一下:
在DAO的实现上,以前常用Spring的依赖注入来生成Dao对象,然后在对象中通过继承或者实现更抽象的接口,调用公共的代码来获得数据库的Connection连接,由于Spring默认情况下都是单例模式,所以每个Dao对象也就只有一个实例。习惯上好像就这样了!
那么如果我把Dao对象的CRUD相关方法全部变成静态的呢?
例如:
public class UserDao{
public Session getHibernateSession(){...}
public static User getUserByID(String id){
User user = getHibernateSession().get(id);
//close session...
return user;
}
public static void addUser(User user){
getHibernateSession().save(user);
//close session...
}
}
理论上来说,这样的话甚至节约了new一个UserDao的实例来完成任务,只需要UserDao class实例就可以了,但总觉得这样用不是很放心,希望大家都来讨论一下,用静态方法来完成数据库操作是否有隐藏的危害呢?如果没有,又到底是静态还是Spring注入调用实例的非静态更好一些呢?