第一章:面向应用的持久层设计笔记(一)
时间: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);
}
.......
}
第一阶段:
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);
}
.......
}
相关阅读 更多 +