淺談什麼是DAO模式
DAO是Data Access Object資料訪問介面,資料訪問:故名思義就是與資料庫打交道。夾在業務邏輯與資料庫資源中間。
DAO的功能:
1. DAO用來封裝Data Source的,就比如,Connection conn = DAOFacotry.createConnection()就可以把Driver,URL,username,passpword這一些放在DAO中。
以後要更改資料庫的型別,比如要把MSSQL換成Oracle的話,只需要更改DAOFacory裡面的getConnection()裡面的Driver,URL,之類的。
2. 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..........
}