什么是DAO
DAO是Data Access Object数据访问接口,数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
DAO的功能:
- DAO用来封装Data Source的……就比如,Connection conn = DAOFacotry.createConnection()……
就可以把Driver. URL. username, passpword这一些放在DAO中以后要更改数据库的类型。比如要把MSSQL换成Oracle的话……只需要更改DAOFacory里面的getConnection()里面的Driver.URL.之类的……
- DAO也是把对数据库的操作(比如最基本的CRUD操作)全部封装在里面……
比如说你要你要插入一个新的用户……那么。在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了……具体的操作是在DAO中实现的……
那么对于要调用DAO的时候。我们只要知道insertUser(User)是用来插入一个新的用户……而不需要知道是如何实现的。
一般 DAO是与Abstract Factory模式一起来用的……
Factory来建立数据库和定位具体的DAO(比如说是UserDao..CustomerDao..)..一般将getConnection设置为static..也可以把HibernateSessionFactory这一个公共类放在这一AbstractFactory类中去...
public class DAOFactory {
private static final SessionFactory sessionFacotory;
// 定义一个TrheadLocal .
static Session currentSession().....
public UserDao getUserDAO() { return new UserDaoImpl(sesssion); }
pulbic OtherDao getOtherDAO() { return new OtherDaoImpl(session); }
......
}
public interface UserDao {
public insertUser(FormBean)
public updateUser(FormBean);
}
然后就实现DAO的接口: (Struts的FormBean...VO来的..)
public class UserDaoImpl implements UserDao {
private Session session;
public UserDaoImpl(Session session){
this.session = session;
}...
public insertUser(FormBean) {
..//..
session.save(UserPO);
..//..
return FormBean;
}
public FormBean updateUser(FormBean) {
..//..
session.update(UserPO);
..//..
return FormBean;
}
}
最后定义你的PO:
public class UserPO {
String firstname, lastname, password..........
}
企业分层架构
客户层:因为现在都采用了B/S开发架构,所以一般都使用浏览器进行访问。
显示层:使用JSP/Servlet进行页面效果的显示
业务层:(Business Object,业务对象):会将多个原子性的DAO操作进行组合,组合成一个完整的业务逻辑。
数据层(DAO):提供多个原子性的DAO操作,例如:增加、修改、删除等,都属于原子性的操作。
资源层主要是数据库的操作层,里面可以进行各种的数据存储,但是这些数据存储操作的时候肯定依靠SQL语句,之前也发现了,如果在一个程序中出现了过多的SQL语句直接操作,则jsp页面变得相当复杂,而且也不便于程序的可重用性。
可以通过一个专门的数据库的操作组件完成,那么这个就是数据层的功能
业务层是整个项目的核心。现在我们要学的是DAO数据层