先看2个DAO类的写法
1:
public class TUserInfoDAOImpl extends BaseDaoImpl implements TUserInfoDAO
{
public TUserInfo getUserInfoByName(String UserName) throws Exception
{
List<TUserInfo> list = (List<TUserInfo>) this.findBy(TUserInfo.class, "name", UserName);
if(list.size()>0)
return list.get(0);
else
return null;
}
}2:
public class TUserInfoDAOImpl extends BaseDaoImpl implements TUserInfoDAO
{
List<TUserInfo> list;
public TUserInfo getUserInfoByName(String UserName) throws Exception
{
list = (List<TUserInfo>) this.findBy(TUserInfo.class, "name", UserName);
if(list != null && list.size()>0)
return list.get(0);
else
return null;
}
}这是个用spring管理的dao类~
注入service使用~
问题
1:这个注入的dao是单例还是多例?似乎是由配置文件定的,但是具体定义在哪里?默认是什么?
2:似乎用单例的比较好,但是如果单例的话,写法1/2,哪种在消耗上好些?写在方法内部的list是在方法返回以后马上会被销毁,还是由垃圾回收机制一定时间后销毁?另外,似乎单例的话,两种写法是不是没多大区别?j2se学的不够扎实,很是细节疑惑,求解
1:
public class TUserInfoDAOImpl extends BaseDaoImpl implements TUserInfoDAO
{
public TUserInfo getUserInfoByName(String UserName) throws Exception
{
List<TUserInfo> list = (List<TUserInfo>) this.findBy(TUserInfo.class, "name", UserName);
if(list.size()>0)
return list.get(0);
else
return null;
}
}2:
public class TUserInfoDAOImpl extends BaseDaoImpl implements TUserInfoDAO
{
List<TUserInfo> list;
public TUserInfo getUserInfoByName(String UserName) throws Exception
{
list = (List<TUserInfo>) this.findBy(TUserInfo.class, "name", UserName);
if(list != null && list.size()>0)
return list.get(0);
else
return null;
}
}这是个用spring管理的dao类~
注入service使用~
问题
1:这个注入的dao是单例还是多例?似乎是由配置文件定的,但是具体定义在哪里?默认是什么?
2:似乎用单例的比较好,但是如果单例的话,写法1/2,哪种在消耗上好些?写在方法内部的list是在方法返回以后马上会被销毁,还是由垃圾回收机制一定时间后销毁?另外,似乎单例的话,两种写法是不是没多大区别?j2se学的不够扎实,很是细节疑惑,求解
默认是singleton.在项目也也推荐用默认的.
2.关于对象什么时候销毁的问题,如果你的一定对象长时间没有使用,或者已经没有任何引用变量指向它时,它将在下一次垃圾回收中被销毁. 具体可参考GC的工作原理.