`
gstarwd
  • 浏览: 1525177 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在DAO设计模式中使用工厂设计

阅读更多

工厂设计:
    使用工厂设计,使前台不用知道具体子类是谁,是前台显示与后台逻辑操作分离,便于修改。

实例:在DAO设计模式中加入工厂设计

DAOFactory.java:使用工厂设计设置子类

view source
<embed id="highlighter_772179_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_772179" menu="false"></embed>
print ?
01. package  mgc.dao.factory;
02.  
03. import  mgc.dao.test.*;
04. import  mgc.dao.test.impl.*;
05. public  class  DAOFactory {
06.      public  static  MemberDAO getMemberDAOInstance() {
07.          return  new  MemberDAOImpl();
08.      }
09. }



MemberDAO.java:数据库操作接口类

view source
<embed id="highlighter_76257_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_76257" menu="false"></embed>
print ?
01. package  mgc.dao.test;
02.  
03. import  java.util.*;
04. import  mgc.dao.vo.*;
05. //规定操作member表的全部方法
06. public  interface  MemberDAO {
07.      //插入数据
08.      public  void  insert(Member member)  throws  Exception;
09.      //修改数据
10.      public  void  update(Member member)  throws  Exception;
11.      //删除数据
12.      public  void  delete( int  id)  throws  Exception;
13.      //按ID查询
14.      public  Member queryById( int  id)  throws  Exception;
15.      //全部查询
16.      public  List queryAll()  throws  Exception;
17. }



Member.java:VO对象类

view source
<embed id="highlighter_308880_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_308880" menu="false"></embed>
print ?
01. package  mgc.dao.vo;
02.  
03. public  class  Member {
04.      private  int  id;
05.      private  String username;
06.      private  String password;
07.       
08.      public  void  setId( int  id){
09.          this .id=id;
10.      }
11.      public  void  setUsername(String username){
12.          this .username=username;
13.      }
14.      public  void  setPassword(String password){
15.          this .password=password;
16.      }
17.      public  int  getId(){
18.          return  this .id;
19.      }
20.      public  String getUsername(){
21.          return  this .username;
22.      }
23.      public  String getPassword(){
24.          return  this .password;
25.      }
26. }



DatabaseConnection.java:数据库连接类

view source
<embed id="highlighter_592693_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_592693" menu="false"></embed>
print ?
01. package  mgc.dao.test.dbc;
02.  
03. import  java.sql.*;
04.  
05. public  class  DataBaseConnection {
06.       
07.      private  final  String DBDRIVER= "sun.jdbc.odbc.JdbcOdbcDriver" ;
08.      private  final  String DBURL= "jdbc:odbc:member" ;
09.      private  Connection conn= null ;
10.       
11.      public  DataBaseConnection() {
12.          try {
13.              Class.forName(DBDRIVER);
14.              this .conn=DriverManager.getConnection(DBURL);
15.          }
16.          catch (Exception e){}
17.      }
18.       
19.      public  Connection getConnection() {
20.          return  this .conn;
21.      }
22.       
23.      public  void  close() {
24.          try {
25.              this .conn.close();
26.          }
27.          catch (Exception e){}
28.      }
29. }



MemberDAOImpl.java:数据库操作类

 
001. package  mgc.dao.test.impl;
002.  
003. import  java.util.*;
004. import  java.sql.*;
005. import  mgc.dao.vo.*;
006. import  mgc.dao.test.*;
007. import  mgc.dao.test.dbc.*;
008.  
009. public  class  MemberDAOImpl  implements  MemberDAO {
010.       
011.      //插入数据
012.      public  void  insert(Member member)  throws  Exception {
013.          String sql= "Insert INTO member (username,password) VALUES (?,?)" ;
014.          PreparedStatement pstmt= null ;
015.          DataBaseConnection dbc= null ;
016.          try {
017.              //连接数据库
018.              dbc= new  DataBaseConnection();
019.              pstmt=dbc.getConnection().prepareStatement(sql);
020.              pstmt.setString( 1 , member.getUsername());
021.              pstmt.setString( 2 , member.getPassword());
022.              //操作数据库
023.              pstmt.executeUpdate();
024.              pstmt.close();
025.          }
026.          catch (Exception e) {
027.              throw  new  Exception(e);
028.          }
029.          finally {
030.              //关闭数据库
031.              dbc.close();
032.          }
033.      }
034.       
035.      //修改操作
036.      public  void  update(Member member)  throws  Exception {
037.          String sql= "Update  member SET username=?,password=? Where ID=?" ;
038.          PreparedStatement pstmt= null ;
039.          DataBaseConnection dbc= null ;
040.          try {
041.              //连接数据库
042.              dbc= new  DataBaseConnection();
043.              pstmt=dbc.getConnection().prepareStatement(sql);
044.              pstmt.setString( 1 , member.getUsername());
045.              pstmt.setString( 2 , member.getPassword());
046.              pstmt.setInt( 3 ,member.getId());
047.              //操作数据库
048.              pstmt.executeUpdate();
049.              pstmt.close();
050.          }
051.          catch (Exception e) {
052.              throw  new  Exception(e);
053.          }
054.          finally {
055.              //关闭数据库
056.              dbc.close();
057.          }
058.      }
059.       
060.      public  void  delete( int  id)  throws  Exception {
061.          String sql= "Delete FROM member Where ID=?" ;
062.          PreparedStatement pstmt= null ;
063.          DataBaseConnection dbc= null ;
064.           
065.          try {
066.              //连接数据库
067.              dbc= new  DataBaseConnection();
068.              pstmt=dbc.getConnection().prepareStatement(sql);
069.              pstmt.setInt( 1 , id);
070.              //操作数据库
071.              pstmt.executeUpdate();
072.              pstmt.close();
073.          }
074.          catch (Exception e) {
075.              throw  new  Exception(e);
076.          }
077.          finally {
078.              //关闭数据库
079.              dbc.close();
080.          }
081.      }
082.       
083.      public  Member queryById( int  id)  throws  Exception {
084.          String sql= "Select * FROM member Where ID=?" ;
085.          PreparedStatement pstmt= null ;
086.          DataBaseConnection dbc= null ;
087.          ResultSet rs= null ;
088.          Member member= null ;
089.          try {
090.              //连接数据库
091.              dbc= new  DataBaseConnection();
092.              pstmt=dbc.getConnection().prepareStatement(sql);
093.              pstmt.setInt( 1 , id);
094.              //操作数据库
095.              rs=pstmt.executeQuery();
096.              if (rs.next()) {
097.                  //将查询结果保存在Member对象中
098.                  member= new  Member();
099.                  member.setUsername(rs.getString( "username" ));
100.                  member.setPassword(rs.getString( "password" ));
101.              }
102.              rs.close();
103.              pstmt.close();
104.          }
105.          catch (Exception e) {
106.              throw  new  Exception(e);
107.          }
108.          finally {
109.              //关闭数据库
110.              dbc.close();
111.          }
112.          return  member;
113.      }
114.       
115.      public  List queryAll()  throws  Exception {
116.          String sql= "Select * FROM member" ;
117.          PreparedStatement pstmt= null ;
118.          DataBaseConnection dbc= null ;
119.          ResultSet rs= null ;
120.          List all= new  ArrayList();
121.          try {
122.              //连接数据库
123.              dbc= new  DataBaseConnection();
124.              pstmt=dbc.getConnection().prepareStatement(sql);
125.              //操作数据库
126.              rs=pstmt.executeQuery();
127.              while (rs.next()) {
128.                  //将查询结果保存在Member对象中
129.                  Member member= new  Member();
130.                  member.setUsername(rs.getString( "username" ));
131.                  member.setPassword(rs.getString( "password" ));
132.                  all.add(member);
133.              }
134.              rs.close();
135.              pstmt.close();
136.          }
137.          catch (Exception e) {
138.              throw  new  Exception(e);
139.          }
140.          finally {
141.              //关闭数据库
142.              dbc.close();
143.          }
144.          return  all;
145.      }
146. }



dao.jsp:前台显示页面

view source
<embed id="highlighter_126215_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_126215" menu="false"></embed>
print ?
01. <%@page contentType="text/html;charset=GB2312" %>
02. <%@page import="java.util.*" %>
03. <%@page import="mgc.dao.factory.*" %>
04. <%@page import="mgc.dao.test.impl.*" %>
05. <%@page import="mgc.dao.vo.*" %>
06. < html >
07.    < head >

相关推荐

    DAO设计模式(工厂+代理)

    在这个“DAO设计模式(工厂+代理)”的例子中,我们将探讨如何结合工厂模式和代理模式来实现更灵活、更易于维护的DAO层。 首先,让我们理解DAO的基本概念。DAO是一个接口或抽象类,定义了对数据库进行操作的方法,...

    DAO设计模式 DAO 设计模式 JAVA设计模式

    DAO(Data Access Object)设计模式是软件开发中一种常见的用于处理数据访问的模式,它将业务逻辑与数据访问逻辑分离,使得代码结构更加...因此,深入理解并灵活运用DAO设计模式对于提升Java应用程序的质量至关重要。

    DAO设计模式辅助资料

    在学习DAO设计模式的过程中,可以参考博客"设计模式5——DAO",该博客可能是对DAO模式的深入讲解,包括原理、优缺点、使用场景以及实践案例。同时,通过阅读这个压缩包中的"dao"文件,你可能能获取更具体的实现示例...

    DAO设计模式DAO设计模式

    在DAO设计模式中,事务的管理至关重要,因为这关系到数据的一致性和完整性。 - **事务划分**:决定事务的开始与结束时机。 - **编程性事务**:开发者需要显式地通过编程的方式来控制事务的开始、提交和回滚。 - **...

    J2EE之DAO设计模式

    DAO设计模式可以通过采用抽象工厂和工厂方法模式来变得非常的灵活. 当底层数据存储实现不需要发生改变时,该策略可以使用工厂方法设计模式实现,来产生应用中所需的DAO. 当底层数据储存实现不得不发生变化的时候, ...

    WEB开发经典之 DAO设计模式

    在DAO设计模式中,首先定义一个DAO接口,这个接口声明了所有对数据库的操作方法。例如,对于一个用户管理模块,可能包含如下方法: - `void addUser(User user)` - `User getUserById(int id)` - `List&lt;User&gt; getAll...

    DAO设计模式精讲(java web开发)

    在本精讲中,我们将深入探讨DAO设计模式的原理、实现方式以及在实际项目中的应用。 **DAO设计模式的核心思想** DAO设计模式的核心是创建一个接口,该接口定义了对数据库进行操作的方法,如查询、插入、更新和删除...

    DAO设计模式Demo

    在实际项目中,DAO设计模式可以结合其他设计模式,比如Spring框架中的`Repository`接口,进一步简化数据库操作。通过使用ORM(Object-Relational Mapping)工具如Hibernate或MyBatis,可以减少手动编写SQL的繁琐工作...

    Java DAO 设计模式.pdf

    #### 一、DAO设计模式的概念 **DAO**(Data Access Object)设计模式是一种在Java EE环境中广泛使用的数据访问模式,它主要应用于处理数据存储组件的交互。这种模式的主要目的是将底层数据访问操作与业务逻辑分开,...

    初步认识JAVA DAO设计模式

    总结来说,DAO设计模式在Java开发中扮演着重要的角色,尤其是在处理数据持久化问题时,它提供了一种灵活且可扩展的方式来管理数据访问,降低了系统的复杂性,提高了代码的可维护性。通过将数据访问逻辑封装在DAO中,...

    javaDAO设计模式

    总结一下,Java DAO设计模式是软件开发中的一种重要实践,它分离了数据访问层与业务逻辑层,使得系统更易于理解和维护。在实际应用中,我们需要根据项目需求选择合适的持久层框架,合理地设计DAO接口和实现,以及...

    工厂模式与DAO模式

    在软件设计模式中,工厂模式和DAO(Data Access Object)模式是两种常用的设计模式,它们在实际开发中扮演着至关重要的角色。工厂模式是创建型设计模式,它提供了一种创建对象的最佳方式,而DAO模式则是一种数据访问...

    DAO设计模式.rar

    在"DAO设计模式"项目中,我们可能看到以下几个关键部分: 1. **用户实体(User Entity)**:这是业务层的对象,通常包含用户的相关属性,如用户名、密码、邮箱等。这些对象不直接与数据库交互,而是通过DAO来处理数据...

    JavaEE技术-DAO设计模式

    在没有使用DAO设计模式之前,数据库操作通常直接在JSP页面中使用JDBC代码,或者通过JavaBean和Servlet来实现,这样做的结果是代码混杂,难以维护。而DAO模式正是为了解决这些问题而生,它将数据库的操作封装起来,让...

    DAO 设计模式经典实例

    通过这个实例,你可以看到DAO模式如何在实际项目中被应用,以及如何与其他设计模式(如工厂模式用于创建DAO实例)结合使用。理解并熟练运用DAO设计模式对于提升软件系统的质量至关重要。在实际开发中,可以根据项目...

    工厂模式dao模式操作数据库小例子

    工厂模式和DAO(Data Access Object)模式是两种常见的设计模式,它们在处理数据库操作时发挥着关键作用。本示例旨在帮助初学者理解如何结合这两种模式来高效地与数据库交互。 首先,我们来详细探讨工厂模式。工厂...

    JavaWeb DAO设计模式DEMO

    这个"JavaWeb DAO设计模式DEMO"是一个示例项目,旨在帮助初学者理解并掌握DAO模式的实现。 DAO模式的主要目标是创建一个独立于数据库访问的接口,这样业务逻辑组件就可以通过这个接口来操作数据,而不需要知道具体...

    工厂模式很DAO模式实现购物车

    本项目“工厂模式很DAO模式实现购物车”是使用Java语言实现的一个购物车系统,旨在帮助初学者理解并运用这两种设计模式。 首先,我们来看**工厂模式**。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳...

    dao设计模式(1)

    本文将深入探讨DAO设计模式的核心概念、实现方式以及在J2EE中的应用。 首先,我们来理解DAO的基本结构。DAO是一个接口,它定义了对数据源进行操作的方法,如增删查改。这些方法不关心具体的数据库访问细节,而是...

Global site tag (gtag.js) - Google Analytics