文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>第一章:面向应用的持久层设计笔记(一)

第一章:面向应用的持久层设计笔记(一)

时间:2007-08-12  来源:sdwsyjp

第一节:解耦合的自然演进

第一阶段:
public boolean withDraw(String id ,string amount)
{
    Connection conn = null;
    Statement statement = null;
    try
    {
       Class.forName("oracle.jdbc.driver.OracleDriver");
       conn = DriverManager.getConnection(
          "jdbc:oracle:thin:@127.0.0.1:1521:forum",
          "MyUserName",
          "Mypassword"
    };
   
    String sqlStr = "Update Member set balance = balance-"
       +amount
       +"where id = '" + id + "'" ;
    statement = conn.createStatement();

    return statement.execute(sqlStr);

.......
}

第二阶段:
public class DBHelper
{
    public static Connection getConnection()
    {
       //从数据连接池获取数据库连接并返回
    }
    public static void releaseConnection(Connection conn)
    {
       //将使用完毕的数据库连接返回到数据连接池
    }
}

然后在上述程序中调用:

此代码实现了获取数据库连接与代码的分离,系统层次间的耦合度降低,灵活性增加:

第三阶段:DAO(Data Access Object)模式

DAO(Data Access Object) = Data(数据) + Access(data accessor 数据访问与操作)

+ Object(数据对象 getter 、setter方法)

第四阶段: 为了实现跨数据库平台移植,引入Factory设计模式;

public class DAOFctory
{
    private static HashMap daoMap = null;//避免每次调用都读取配置文件所引起的

大量磁盘操作,采用HashMap作为DAO缓存实现;
   
    public static Object getDAO(Class daoInterface)
    {
       initial();
       Object dao = daoMap.get(daoInterface);
       ......
    }

}

第五阶段:实现上层接口与下层调用相衔接,引入Proxy设计模式

public class CustomerProxy
{
    public static Customer getCustomer(String customerID)
    {
       CustomerDAO custDAO =
          (CustomerDAO) DAOFctory.getDAO(CustomerDAO.class);
       return custDAO.getCustomer(customerID);
    }
.......
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载