采用DTO和DAO對JDBC程序進行進一步優化
阿新 • • 發佈:2018-05-08
cti 使用 let 進一步 stub cep auto 修改 date
采用DTO和DAO對JDBC程序進行進一步優化
DTO:數據傳輸對象,主要用於遠程調用等需要遠程調用對象的地方
DAO:數據訪問對象,主要實現封裝數據庫的訪問,通過它可以把數據庫中的表轉換成DTO類
引入DTO其實就是新建實體類。
那麽DAO呢,就是封裝訪問數據的方法,比如對某一個表插入,更新,刪除等方法可以放進對應的dao中
代碼如下:
這是訪問User表所使用方法的接口,裏面放的是訪問過程中會使用到時方法
public interface UserDao { public void save(Connection conn,User user) throws SQLException;public void update(Connection conn,User user) throws SQLException; public void delete(Connection conn, User user) throws SQLException; }
這是接口的具體實現類,具體實現那些訪問表的方法
public class UserDaoimpl implements UserDao { @Override public void save(Connection conn, User user) throws SQLException {// TODO Auto-generated method stub PreparedStatement ps=conn.prepareCall("insert into tbl_user(name,password,email)" + "values(?,?,?)"); ps.setString(1, user.getName()); ps.setString(2, user.getPassword()); ps.setString(3, user.getEmail()); ps.execute(); } @Overridepublic void update(Connection conn, User user) throws SQLException { // TODO Auto-generated method stub PreparedStatement ps=conn.prepareCall("update tbl_user set name=?,password=?,email=? where name=?"); ps.setString(1, user.getName()); ps.setString(2, user.getPassword()); ps.setString(3, user.getEmail()); ps.setString(4, user.getName()); ps.execute(); } @Override public void delete(Connection conn, User user) throws SQLException { // TODO Auto-generated method stub PreparedStatement ps=conn.prepareCall("delete from tbl_user where id =?"); ps.setLong(1, user.getId()); ps.execute(); } }
我個人的感覺就是,如此優化以後,可復用的能力增強了。具體要實現或者需要修改時方便了很多。然後就是出現問題後,也便於找到是哪部分的問題,便於測試。
采用DTO和DAO對JDBC程序進行進一步優化