DAO程序設(shè)計(jì)
DAO是Data Access Object數(shù)據(jù)訪問接口,數(shù)據(jù)訪問:顧名思義就是與數(shù)據(jù)庫打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。DAO可以說是一種設(shè)計(jì)模式,它屬于J2EE設(shè)計(jì)模式。
開發(fā)人員用(DAO)這種模式將底層數(shù)據(jù)訪問操作與高層業(yè)務(wù)邏輯分離開,一個典型的 DAO 實(shí)現(xiàn)有以下組件:
- 一個 DAO 工廠類
- 一個 DAO 接口
- 一個實(shí)現(xiàn)了 DAO 接口的具體類
- 數(shù)據(jù)傳輸對象(有時(shí)稱為值對象)
POJO與PO的區(qū)別:
POJO:Plain Ordinary Java Objects
簡單的Java對象(Plain Ordinary Java Objects)(Plain Old Java Object)實(shí)際就是普通JavaBeans
POJO是Plain Ordinary Java Objects的縮寫不錯,但是它通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業(yè)務(wù)邏輯的協(xié)助類。
POJO有一些private的參數(shù)作為對象的屬性。然后針對每個參數(shù)定義了get和set方法作為訪問的接口。例如:
public class User {
private long id;
private String name;
public void setId(long id) {
this.id = id;
}
public void setName(String name) {
this.name=name;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
}
POJO對象有時(shí)也被稱為Data對象,大量應(yīng)用于表現(xiàn)現(xiàn)實(shí)中的對象。
PO=persisent object 持久對象;
J2EE組件層次:我們都應(yīng)該遵循
客戶端—>表示層—>業(yè)務(wù)層—>數(shù)據(jù)層—>數(shù)據(jù)庫
public interface DAO{
public void insert(Person person);
}
public class Person{
private int id;
priavte String name;
priavte String password;
//英文版編程器如下
//點(diǎn)右鍵 選source選Generate Constructor using Fields構(gòu)造方法
public Person(){
super();
}
//點(diǎn)右鍵 選source選Generate using Fields構(gòu)造一個帶參方法
public person(Integer id,String name,String password){
super()
this.id=id;
this.name=name;
this.password=password;
}
//點(diǎn)右鍵 選source選Generate Getters and Setters創(chuàng)建javabean
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public class DataBaseConnection {
private final String DB="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private final String URL="jdbc:sqlserver://localhost:1433;DatabaseName=Student";
private final String SA="sa";
private final String PASSWORD="";
public void DataBaseConnection(){
try {
Class.forName(DB);
Connection conn= DriverManager.getConnection(URL,SA,PASSWORD);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connertion getConnection(){
return this.conn;
public viod close(){
if(conn!=null){
this.conn.close();
}
}
}
}
public class DAOImp implements DAO{
public void inster(Person person){
String sql="inster into person(id,name,password) values(?,?,?)";
PreparedStatement pstmt=null;
DataBaseConnection dbc=null;
try{
dbc=new DataBaseconnection();
pstmt=dbc.getConnection().preparedStatement(sql);
pstmt.setString(1, person.getId());
pstmt.setString(2,person.getName());
pstmt.setString(3, person.getPassword());
pstmt.executeUpdate();
}catch(Exception e){
throw new Exception("操作出現(xiàn)異常");
}
}
}