DAO设计模式简要分析
1,首先定义被操作对象数据的实体类,有的书上称VO类
注意以下几点:类名和表名一致,私有化属性,添加SET()
保存在
2,定义一个DatabaseConnection
因为要对数据进行操作的时候都要进行数据库的链接和关闭操作,而且在一个项目组必然会有大量的操作方法,增删改之类的,所以为了减少代码量,可以把这部分代码提取出来,封装成一个类,用到的时候,直接可以调用.
具体属性:
因为要这个类要返回一个
一个
在里面实现数据库的链接操作,此时可以用的属性文件配置变量
一个返回值是空的closeconnection()方法;
关于数据库链接关闭的databaseconnection类还有以下处理方法。
因为在具体的操作过程有可能会遇到不同的数据库链接操作,
此方法中需要写
接口中定义上面说到的获得和关闭两个方法
在工厂类中返定义一个getConnection()方法
这三个类完成后
写在一个新的包中“项目名。dbc”
package
import
import
import
public
private
private
private
private
private
public
prop.load(DatabaseConnection.class.getClassLoader().getResourceAsStream("DBConfig.properties"));
DATABASE_DRIVER
DATABASE_URL
DATABASE_USER
DATABASE_PWD
//
e.printStackTrace();
}
}
public
try
Class.forName(DATABASE_DRIVER);
conn
}
//
e.printStackTrace();
}
return
}
public
if(this.conn
try{
this.conn.close();
}catch(Exception
e.printStackTrace();
}
}
}
}
3,定义DAO
根据不同的需求写不同的方法,一般就是增删改查
package
import
public
public
public
}
写在“项目名。dao”包里面
4,写DAO
实现到接口中的方法
package
import
import
import
import
public
private
private
public
this.conn
}
public
return
}
public
return
}
}
有自定义了两个属性
一个数据库操作对象属性
放在“项目名。DAO.IMPL”中表示dao接口的真实主题实现类
5,写代理主题的实现类。
这个类也要实现到接口中的方法
名字为
为什么要写这个类,个人理解,首先可以降低代码之间的耦合度
我们在上面第二步中定义了数据库的链接类
第三步第四步中定义了对数据的操作类,
在这个类中就是
所以这个类中有两个私有变量,
一个是第二步中写的链接类变量,一个是地四步写的实现dao接口的操作类,
在构造方法里
我们在地四步中写dao实现类的时候定义了一个构造方法,参数是connection,
此时就可以用
让后
6,dao的工厂类
定义一个返回类型是
总结:不管是第二步为了应对不同的数据库链接,提到的把一个类写成三个类
一个接口
还是数据操作中写的一个接口
相同点;具体的工厂类是使用的时候用到的,而返回的都接口类型,返回值却是具体的实现类。这就是java中的多态,用的是接口,用的是固定的方法名,至于不同的数据库实现或方法实现交给实现类去做,根据不同的返回值使用不同的方法
不同点:至于数据操作中