1. 程式人生 > >淺談什麼是DAO模式

淺談什麼是DAO模式

什麼是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..........
  }