不使用Spring。
我有一个RootDao的父类,里面有一个执行HQL语句的方法
RootDao代码片段:
//通过传入的HQL查询语句,返回List
public List getList(String hql) {
//创建session
Session session = HibernateSessionFactory.getSession();
List list = new ArrayList();
Query query = null;
try {
//执行传入的hql语句。from User之类
query = session.createQuery(hql);
list = query.list();
//关闭session
session.close();
} catch (HibernateException he) {
logger.error(he);
} finally {
try {
if (session != null && session.isOpen()) {
session.close();
}
} catch (Exception e) {
logger.error(e);
}
}
return list;
}
有一个UserDao,继承了RootDao,有一个getUserList()方法,拼一个HQL语句,使用父类的getList()方法获取List
public class UserDao extends RootDao{
//查询username等于传入的值的List
public List getUserList(String username){
List userlist = new ArrayList();
userlist = this.getList("from User where username = '"+username+"'");
retrun userlist;
}
}
一般来说service层new一个UserDao即可调用getUserList("admin")方法
即UserDao udao = new UserDao();
udao.getUserList("admin");
后来一个朋友说UserDao可以写成单例
udao用getInstance()方式来获取,保证UserDao只有一个实例
问题:
1、UserDao用单例,调用比较频繁的时候,会不会对传入的username产生影响?
2、调用频繁的时候,RootDao的getList方法里的session.close()会不会对别的产生影响?