摘要:Spring的JDBC支持,Spring提供了DAO框架,提供了對數據庫存取時異常的封裝,提供的JdbcTemplate類大大簡化了JDBC在API上的操作等。
?
一個傳統DAO的例子。
如,現在有一個數據庫表user,該表有id,name,age三個字段。對該表抽象得出User對象,在進行數據庫操作時(find,insert,update,delete)應用程序不應依賴于一個實際的類實現,而是可以讓它依賴一個接口,在應用程序中通過對接口的聲明來操作。
?
●????
User.java
?
這是User對象
?
package com.kela.spring.jdbc;
?
public class User {
???
??? private Integer id;
??? private String name;
??? private Integer age;
???
??? public Integer getAge() {
??????? return age;
??? }
??? public void setAge(Integer age) {
??????? this.age = age;
??? }
??? public Integer getId() {
??????? return id;
??? }
??? public void setId(Integer id) {
??????? this.id = id;
??? }
??? public String getName() {
??????? return name;
??? }
??? public void setName(String name) {
??????? this.name = name;
??? }
???
}
●????
IUserDAO.java
?
這是IUserDAO接口,負責聲明對User對象的操作。
?
package com.kela.spring.jdbc;
?
public interface IUserDAO {
???
??? public void insert(User user);
??? public User find(Integer id);
public void update(User user);
public void delete(User user);
}
?
●????
UserDAO.java
?
具體的數據庫存取類,實現了IUserDAO接口。
?
package com.kela.spring.jdbc;
?
public class UserDAO implements IUserDAO {
public void insert(User user) {
??? Connnection conn = null;
??? Statement stmt = null;
??? try {
??????? //
執行數據庫插入操作
??? } catch (SQLException e) {
???
??? //…
??? } finally{
??????? //…
}
}
??? public User find(Integer id) {
??????? //
查詢
??????? return user;
}
public void update(User user) {
??? //…
}
public void delete(User user) {
??? //…
}
}
?
●????
Test.java
?
在應用程序中進行數據存取時,可以使用IUserDAO來聲明接口,進行數據操作。
… …
User user = new User();
user.setId(new Integer(2));
user.setName(“kela”);
user.setAge(new Integer(28));
?
IUserDAO userDao = new UserDAO();
userDao.insert(user);
?
… …
●????
學習小結
?
由于依賴于接口,所以可以隨時替換IUserDAO的實現類,在IUserDAO接口聲明的操作方法上并沒有任何于底層數據庫存取的技術細節,Spring的DAO框架這是基于這樣的原理,將應用程序與底層存取技術隔離開來。
?