JavaEE项目实战(OA系统)之八_部门管理之二
二、数据访问层
数据访问层先写接口再写实现类,包结构如下:
接口:
public interface DeptDao {
void add(Dept dept);
void del(int id);
void update(Dept dept);
Dept getById(int id);
List<Dept> getAll();
}
实现类(实现类放在impl子包中,命名为“接口类名”+Impl):
// 数据访问层
@Repository
public class DeptDaoImpl implements DeptDao {
@Resource
private SessionFactory sessionFactory; // session工厂对象
@Override
public void add(Dept dept) {
Session session = sessionFactory.getCurrentSession();
session.save(dept);
}
@Override
public void del(int id) {
Session session = sessionFactory.getCurrentSession();
Dept dept = this.getById(id);
session.delete(dept);
}
@Override
public void update(Dept dept) {
Session session = sessionFactory.getCurrentSession();
session.update(dept);
}
@Override
public Dept getById(int id) {
Session session = sessionFactory.getCurrentSession();
return (Dept) session.get(Dept.class, id);
}
@SuppressWarnings("unchecked")
@Override
public List<Dept> getAll() {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from Dept");
return (List<Dept>) query.list();
}
// getter & setter
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
Hibernate4的DAO类代码已经很简单了,只需几行代码就可以完成各种操作,这是由于Hibernate会辅助我们生成sql语句,程序运行时,可以在控制台看到生成的sql语句。
增删改查方法的第一句代码都是先取得session。session是Hibernate中类似于数据库连接的概念,每次先取连接,再执行相应方法。
查询方法有两个,一个是根据id查找单个对象,一个是查找所有对象,返回列表。
根据id查找单个对象,一般使用get方法,参数1是实体类的class,参数2是id。
查找所有对象,一般使用Query对象,Query对象是Hibernate是专用于查询的对象,使用Hibernate专用的HQL语言进行查询。