자바 웹 에서 데이터베이스 에 접근 하 는 데 필요 한 DAO 와 VO

1. VO 와 DAO 는 무엇 입 니까?
VO 는 일반적인 자바 빈 이 고 자바 빈 에 대한 중요 한 응용 은 데이터 베 이 스 를 조회 하 는 코드 로 jsp 에서 자바 빈 에 이식 하 는 것 이다.jsp 를 진정한 표현 층 으로 하고 jsp 에서 이 특정한 클래스 가 제공 하 는 방법 을 호출 하여 데이터 베 이 스 를 조작 합 니 다.
DAO 는 Data Access Object 류 라 고 하 는데 데이터 베 이 스 를 방문 하 는 것 을 전문 적 으로 책임 집 니 다. 분명히 데이터 베 이 스 를 조회 하 는 코드 를 DAO 에 쓸 수 있 습 니 다. 보통 VO (value object) 를 사용 하여 DAO 에 맞 춰 사용 할 수 있 습 니 다. DAO 에서 기록 을 조회 할 때마다 VO 의 대상 으로 봉 할 수 있 습 니 다.마지막 으로 모든 실례 화 된 대상 을 하나의 집합 에 넣 고 되 돌려 줍 니 다. 그러면 차원 의 분 리 를 실현 하고 결합 도 를 낮 출 수 있 습 니 다. DAO 를 사용 할 때 해당 하 는 가방 을 가 져 와 야 실현 할 수 있 습 니 다. 그 다음 에 DAO 류 를 사용 하여 인 스 턴 스 를 통 해 데이터 베 이 스 를 방문 할 수 있 습 니 다.
  2. 실현:
다음은 VO 와 DAO 를 사용 하여 데이터 에 대한 접근 을 실현 합 니 다. 먼저 작업 원 리 를 확인 하고 데이터 베 이 스 를 모두 DAO 에 밀봉 해 야 합 니 다. 데이터 베이스 에서 조회 한 정 보 를 VO 로 예화 하여 Array List 배열 에 넣 고 되 돌려 야 합 니 다. DAO 류 의 코드 는 다음 과 같 습 니 다.(이 코드 는 Oracle 데이터 베 이 스 를 방문 하 는 데 사용 되 며, 표 new message 구조 가 구축 되 었 으 며, 실현 되 는 기능 은 기본 적 인 뉴스 발표 시스템 입 니 다) 클래스 를 구축 하여 뉴스 리 얼 즈 라 고 명명 합 니 다. 아래 그림 은 일부 파일 의 레이아웃 입 니 다. 다음 과 같 습 니 다.
VO 와 DAO 의 부분 클래스 만 들 기
package dao;

import com.lut.beans.NewsRealese;
import static java.lang.System.out;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class NewsRealeseDao {

    public ArrayList queryAllNews() throws Exception {
        Connection conn = null;
        ArrayList newsRealese = new ArrayList();
        try {
            //      
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String url = "jdbc:oracle:thin:@localhost:1521:orcl";
            conn = DriverManager.getConnection(url, "scott", "wjk139");
            //  SQL   
            String sql = "select * from newmessage";//  
            Statement stat = conn.createStatement();
            ResultSet rs = stat.executeQuery(sql);
            while (rs.next()) {   //   VO
                NewsRealese news = new NewsRealese();
                news.setNewsId(rs.getString("newsid"));
                news.setClassId(rs.getString("CLASSID"));
                news.setKindId(rs.getString("KINDID"));
                news.setMyOther(rs.getString("MYOTHER"));
                news.setHeadTitle(rs.getString("HEADTITLE"));
                news.setContent(rs.getString("CONTENT"));
                news.setConnectRealtive(rs.getString("CONNECTREALTIVE"));
                news.setAuthor(rs.getString("AUTHOR"));
                news.setEditor(rs.getString("EDITOR"));
                news.setNewsFrom(rs.getString("NEWSFROM"));
                news.setTop(rs.getString("TOP"));
                news.setNewsTime(rs.getString("NEWSTIME"));
                news.setHits(rs.getString("HITS"));
                news.setState(rs.getString("STATE"));
                news.setTag(rs.getString("TAG"));
                newsRealese.add(news);
            }
            rs.close();
            stat.close();
        } catch (Exception e1) {
            e1.printStackTrace();
        } finally {
            try {//    
                if (conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (Exception ex) {
            }
            return newsRealese;
        }
    }}
다음은 VO 를 실현 하 는 코드 예제 입 니 다. 그 중에서 각 항목 은 데이터베이스 에 있 는 표 항목 내용 입 니 다. 집합 은 기본 적 인 뉴스 속성 요 소 를 정 의 했 습 니 다. 패 키 징 함 수 를 사용 하여 패 키 징 하면 됩 니 다. 여기 서 우 리 는 JavaBean 류 를 만들어 뉴스 Realese 라 고 명명 하고 이 를 웹. xml 에 배치 합 니 다.
package com.lut.beans;
public class NewsRealese {
private String newsId;
private String classId;
private String kindId;
private String myOther;
private String headTitle;
private String content;
private String connectRealtive;
private String author;
private String editor;
private String newsFrom;
private String top;
private String newsTime;
private String hits;
private String state;
private String tag;
    public String getNewsId() {
        return newsId;
    }
    public void setNewsId(String newsId) {
        this.newsId = newsId;
    }
    public String getClassId() {
        return classId;
    }
    public void setClassId(String classId) {
        this.classId = classId;
    }
    public String getKindId() {
        return kindId;
    }
    public void setKindId(String kindId) {
        this.kindId = kindId;
    }
    public String getMyOther() {
        return myOther;
    }
    public void setMyOther(String myOther) {
        this.myOther = myOther;
    }
    public String getHeadTitle() {
        return headTitle;
    }
    public void setHeadTitle(String headTitle) {
        this.headTitle = headTitle;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getConnectRealtive() {
        return connectRealtive;
    }
    public void setConnectRealtive(String connectRealtive) {
        this.connectRealtive = connectRealtive;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getEditor() {
        return editor;
    }
    public void setEditor(String editor) {
        this.editor = editor;
    }
    public String getNewsFrom() {
        return newsFrom;
    }
    public void setNewsFrom(String newsFrom) {
        this.newsFrom = newsFrom;
    }
    public String getTop() {
        return top;
    }
    public void setTop(String top) {
        this.top = top;
    }
    public String getNewsTime() {
        return newsTime;
    }
    public void setNewsTime(String newsTime) {
        this.newsTime = newsTime;
    }
    public String getHits() {
        return hits;
    }
    public void setHits(String hits) {
        this.hits = hits;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public String getTag() {
        return tag;
    }
    public void setTag(String tag) {
        this.tag = tag;
    } 
}

현재, 우 리 는 새로운 jsp 페이지 를 만 들 고 index. jsp 라 는 이름 을 데이터베이스 에 접근 하기 위해 서 입 니 다. 그 코드 는 다음 과 같 습 니 다. 물론 사용 하 는 과정 에서 필요 한 패키지 파일 을 가 져 와 야 합 니 다. 구체 적 인 레이아웃 에 대해 서 는 자세히 설명 하지 않 습 니 다.
<%@page contentType="text/html" import="java.util.*,java.sql.*,com.lut.beans.NewsRealese,dao.NewsRealeseDao" 
        pageEncoding="UTF-8" language="java"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>      --        、         、        </title>
        <link type="text/css"  rel="stylesheet"  href="newsRealese.css"/>  
    </head>

    <body id="body">

        <a href="adminLogin.jsp" style="table-layout: right">     </a><h1 id="p">    </h1><br>
        <table  border="0" style="width:100%; height:100%" align="center">
            <tr>
                <td style="width: 10%"> </td>
                <td>
                    <%
                        NewsRealeseDao newsRealeseDao = new NewsRealeseDao();
                        ArrayList newsRealese = newsRealeseDao.queryAllNews();
                    %> 
                    <%
                        for (int i = 0; i < newsRealese.size(); i++) {
                            NewsRealese newRealese = (NewsRealese) newsRealese.get(i);
                    %>   
            <center><table  border="0" width="100%" id="table">
                    <tr>
                        <td width="128"><p>       </p>
                            <p>         </p>
                        </td>
                        <td ><table  border="0" width="100%">
                                <tr>
                                    <td width="11%" >     :</td>
                                    <td colspan="3"><%=newRealese.getMyOther()%> </td>
                                    <td width="10%" >    :</td>
                                    <td width="44%" ><%=newRealese.getHeadTitle()%> </td>
                                </tr>
                                <tr>                  
                                    <td colspan="6">    :</td> 
                            </table>
                            <table width="100%" border="0"> 
                                <tr>
                                    <td>
                                        <a  target="_blank" href="newRealese_detail.jsp?newsid=<%=newRealese.getNewsId()%>"/>
                                        <table width="100%" border="0" align="center">
                                            <tr>
                                                <td> 
                                                    <%=newRealese.getContent()%>					     
                                                </td> 
                                            </tr>
                                        </table>             
                                    </td> 
                                </tr>  
                            </table>
                            <table border="0" width="100%">      
                                <tr>
                                    <td width="51" height="30">  :</td>
                                    <td width="203"><%=newRealese.getAuthor()%> </td>
                                    <td width="97">      :</td>
                                    <td width="167"><%=newRealese.getNewsTime()%> </td>
                                    <td width="99">      :</td>
                                    <td width="191"><%=newRealese.getHits()%> </td>
                                </tr>         
                            </table></td>
                    </tr>
                    <tr>
                        <td height="21" colspan="2"><hr></td>
                    </tr>
                </table></center>
                <%
                    }
                %>


        </td>
        <td> </td>
    </tr>
    <tr>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
</table>

</body>
</html>

다음은 그 실현 효과 이다.
그림 1 데이터베이스 접근 의 실현 효과
그러나 DAO 와 VO 를 사 용 했 기 때문에 jsp 페이지 에서 자바 코드 를 완전히 제거 하지 못 한 것 같 습 니 다. 그러나 예전 에 JDBC 코드 를 직접 썼 을 때 많이 좋아 졌 습 니 다. 또한 jsp 페이지 에 jdbc 와 관련 된 코드 가 나타 나 지 않 았 고 프로그래머 들 은 데이터 뱅 크 의 세부 사항 과 구 조 를 알 필요 가 없 기 때문에 분업 개발 에 편리 합 니 다.
이상 은 DAO 와 VO 를 사용 하여 데이터 베 이 스 를 방문 하 는 것 입 니 다.

좋은 웹페이지 즐겨찾기