SSH中使用Hibernate的一些注意事项:

package com.hy.dao.impl;

import java.sql.SQLException;
import java.util.List;


import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.hy.dao.UserDao;
import com.hy.entity.User;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao{
/***
 * 淇濆瓨
 * */
    @Override
    public void add(User user) {
        getHibernateTemplate().save(user);
    }
    @Override
    public User findUser(String uname,String pwd) {
        User user = null;
        Session session=getHibernateTemplate().getSessionFactory().openSession();//打开session
        String hql = "from User where uname=? and pwd=?";
        Query query = session.createQuery(hql);
        query.setString(0,uname);
        query.setString(1, pwd);
        user = (User) query.uniqueResult();
        session.close();
        return user;
    }
}
像上面的这种查询方式,可以正确查询出数据,但是必须有session.close();

通过进一步了解,我发现这样的做法纯属画蛇添足,明明继承了HibernateDaoSupport,却偏偏要用纯Hibernate的方式来查询数据库,更为简洁的做法是:

 public User findUser(String uname,String pwd) {
        String hql = "from User where uname="+uname+" and pwd="+pwd+"";

        List<User> user = getHibernateTemplate().find(hql);
        return user.get(0);
    }

猜你喜欢

转载自my.oschina.net/u/3442347/blog/1784910