DMS DAO 프로토타입 - ServiceDAO의findAll 메서드

8930 단어 학습 노트
DMS(Database Management System 데이터베이스 관리 시스템)DAODAO(Data Access Object) 데이터 접근 대상은 대상을 대상으로 하는 데이터베이스 인터페이스이다.DAO의 설계 원칙은 데이터 접근과 업무 논리의 분리를 실현하고 가장 기본적인 삭제 수정 방법(curd)을 봉인하는 것이다.1. DMS DAO 원형 - 서비스 DAO의findAll 방법 사례 1: 자바 코드를 사용하여 데이터베이스에 연결하여 모든 업무 계정 정보를 조회하는 방법.SERVICE 테이블 구조 소개
필드 이름
타입
비고
필드 설명
ID
NUMBER (11)
PRIMARY KEY NOT NULL
비즈니스 계정 ID
ACCOUNT_ID
NUMBER(11)
FOREIGN KEY
계정 ID
UNIX_HOST
VARCHAR2(15)
NOT NULL
서버 주소
OS_USERNAME
VARCHAR2(50)
NOT NULL
서버의 OS 계정
LOGIN_PASSWD
VARCHAR2(30)
NULL
로그인 암호
STATUS
CHAR(1)
NOT NULL
0:개통;1: 일시정지하기;2: 삭제
CREATE_DATE
DATE
NOT NULL
창설 날짜, 창설 개통
PAUSE_DATE
DATE
NULL
일시 중지 날짜
CLOSE_DATE
DATE
BULL
삭제 날짜
COST_ID
NUMBER(11)
FOREIGN KEY NOT NULL
비용 코드
테이블을 작성할 때 외부 키 구속조건은 고려하지 않으며 다음과 같이 테이블 작성 문이 표시됩니다.
CREATE TABLE SERVICE(
ID NUMBER(11) CONSTRAINT SERVICE_ID_PK PRIMARY KEY NOT NULL,
ACCOUNT_ID NUMBER(11) NOT NULL,
ACCOUNT_ID NUMBER(11) NOT NULL,
UNIX_HOST VARCHAR2(15) NOT NULL,
 OS_USERNAME VARCHAR2(50) NOT NULL,
 LOGIN_PASSWD VARCHAR2(30) NOT NULL,
STATUS CHAR(1) NOT NULL,
 CREATE_DATE DATE NOT NULL,
 PAUSE_DATE DATE,
 CLOSE_DATE DATE,
 COST_ID NUMBER(11) NOT NULL
 );

테스트 데이터를 삽입하기 전에 기본 시간 형식을 수정합니다.
alter session set nls_date_format = 'yyyy mm dd hh24:mi:ss';

SERVICE 테이블에 테스트 데이터를 삽입하고 제출합니다.
INSERT INTO SERVICE VALUES (2001,1010,'192.168.0.26','guojing',
 '12345',0,'2009 03 10 10:00:00',null,null,1);

INSERT INTO SERVICE VALUES (2002,1011,'192.168.0.26','huangrong',
'12345',0,'2009 03 01 15:30:05',null,null,1);

 INSERT INTO SERVICE VALUES (2003,1011,'192.168.0.20','huangrong',
 '12345',0,'2009 03 01 15:30:10',null,null,3);

INSERT INTO SERVICE VALUES (2004,1011,'192.168.0.23','huangrong',
'12345',0,'2009 03 01 15:30:15',null,null,6);

INSERT INTO SERVICE VALUES (2005,1019,'192.168.0.26','luwushuang',
 '12345',0,'2012 02 10 23 :50:55',null,null,4);

 INSERT INTO SERVICE VALUES (2006,1019,'192.168.0.20','luwushuang',
'12345',0,'2012 02 10 00 :00:00',null,null,5);

 INSERT INTO SERVICE VALUES (2007,1020,'192.168.0.20','weixiaobao',
'12345',0,'2012 02 10 11:05:20',null,null,6);

INSERT INTO SERVICE VALUES (2008,1020,'192.168.0.20','guojing',
 '12345',0,'2012 02 11 12:05:21',null,null,6);
INSERT INTO SERVICE VALUES (2009,1020,'192.168.0.20','tongxiangyu',
'12345',0,'2012 02 12 10:05:20',null,null,6);

 INSERT INTO SERVICE VALUES (2010,1020,'192.168.0.20','baizhantang',
 '12345',0,'2012 02 11 11:05:30',null,null,6);

 INSERT INTO SERVICE VALUES (2011,1018,'192.168.0.20','moxiaobei',
 '12345',0,'2012 02 11 12:05:31',null,null,6);

 INSERT INTO SERVICE VALUES (2012,1018,'192.168.0.20','luxiucai',
'12345',0,'2012 02 12 12:06:30',null,null,6);

INSERT INTO SERVICE VALUES (2013,1018,'192.168.0.20','lidazhui',
 '12345',0,'2012 02 13 13:07:31',null,null,6);

 INSERT INTO SERVICE VALUES (2014,1015,'192.168.0.20','guofurong',
'12345',0,'2012 02 14 14:08:32',null,null,6);

INSERT INTO SERVICE VALUES (2015,1015,'192.168.0.20','xingbutou',
 '12345',0,'2012 02 15 15:09:33',null,null,6);

COMMIT;

서비스 DAO 클래스를 만들고 클래스에 새 방법findAll을 만들어서 모든 업무 계정 정보를 조회합니다.findAll 방법에서 먼저 Oracle 데이터베이스에 연결된 드라이버를 등록합니다.
Class.forName("oracle.jdbc.OracleDriver");

DriverManager의 getConnection 방법을 호출하여 Connection 클래스의 객체를 가져와 연결합니다.연결 방법에는 세 가지 파라미터가 있는데 첫 번째 파라미터는 데이터베이스를 연결하는 문자열을 나타내고 데이터베이스 정보를 연결해야 한다. 예를 들어 Oracle 데이터베이스를 연결하는 연결 문자열 형식은 jdbc:oracle:thin:@: 두 번째 파라미터는 데이터베이스를 연결하는 사용자 이름을 나타내고 세 번째 파라미터는 데이터베이스를 연결하는 비밀번호를 나타낸다. 연결 데이터베이스에 따라 사용자 이름과 비밀번호가 다르다.상응하는 수정 위에서 말한 세 가지 매개 변수.
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:ORCL","scott", "tiger"

Connection은 응용 프로그램과 데이터베이스의 연결을 나타내며,createStatement () 방법을 호출하면 데이터베이스 조작 대상인 Statement를 얻을 수 있습니다.
stmt = con.createStatement();

Statement는 SQL 문을 실행하고 생성한 결과를 반환하는 데 주로 사용됩니다.실행 중인 SQL 문을 나타내는 매개 변수가 있는 excuteQuery 방법을 호출합니다.
ResultSet   rs = stmt.executeQuery("select ID, ACCOUNT_ID, UNIX_HOST, OS_USERNAME,
LOGIN_PASSWD, CREATE_DATE from SERVIC");

ResultSet은 데이터베이스 조회 작업의 결과 세트를 나타냅니다.현재 데이터 줄을 가리키는 커서가 있습니다.처음 커서가 첫 줄에 놓이기 전에,next 방법을 사용해서 커서를 다음 줄로 이동합니다. 이 방법은ResultSet 대상이 다음 줄이 없을 때false로 되돌아오기 때문에while 순환에서 결과를 교체할 수 있습니다.ResultSet은 getXXX(String column) 방법을 제공합니다. 예를 들어 getInt(String column) 등은 현재 ResultSet 대상의 현재 줄에 지정된 열 이름의 값을 가져옵니다. 그 중에서 매개 변수column은 데이터베이스 테이블의 열 이름을 나타냅니다.열 이름에 따라 열의 데이터 정보를 얻는 것을 추천합니다.
while (rs.next()) {
System.out.println(rs.getInt("ID") + ","
 + rs.getInt("ACCOUNT_ID") + ","
+ rs.getString("UNIX_HOST")
+ "," + rs.getString("OS_USERNAME") + ","
 + rs.getString("LOGIN_PASSWD") + ","
 + rs.getTimestamp("CREATE_DATE"));
 }

ResultSet은 getXXX (int column Index) 방법을 제공합니다. 예를 들어 getInt (int column Index) 등은 현재 ResultSet 대상의 현재 줄에 지정된 열 인덱스 값을 가져옵니다. 그 중에서 매개 변수인column Index는 가져올 열의 데이터가 표에서 몇 번째 열인지 표시합니다. 주의: 열 수는 1부터 시작합니다.
while (rs.next()) { System.out.println(rs.getInt(1) + "," +
 rs.getInt(2) + "," + rs.getString(3) + "," + rs.getString(4)
 "," + rs.getString(5) + "," + rs.getTimestamp(6)); }

데이터베이스의 연결 자원은 유한하기 때문에 사용이 끝난 후에 제때에 방출해야 한다.그렇지 않으면 자원 소모로 인해 프로그램이 마비되어 정상적으로 작동하지 못할 것이다.JDBC 대상의close 방법을 호출하면 이 대상과 관련된 시스템 자원을 방출할 수 있습니다.
rs.close();
stmt.close();

서비스 DAO 클래스 코드는 다음과 같습니다.
public class ServiceDAO {
public void findAll() {
      Connection con = null;
      Statement stmt = null;
      ResultSet rs = null;
       try {
              Class.forName("oracle.jdbc.OracleDriver");
                con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL",
                                                                          "scott", "tiger");
                  stmt = con.createStatement();
                   rs = stmt .executeQuery("select ID, ACCOUNT_ID, UNIX_HOST, OS_USERNAME,
                                                            LOGIN_PASSWD, CREATE_DATE from SERVICE");
                      while (rs.next()) {
                                     System.out.println(rs.getInt("ID") + ","
                                         + rs.getInt("ACCOUNT_ID") + "," + rs.getString("UNIX_HOST")+ "," + rs.getString("OS_USERNAME") + ","
                                         + rs.getString("LOGIN_PASSWD") + ","+ rs.rs.getTimestamp("CREATE_DATE"));
                                              }

                                          rs.close();
                                           stmt.close();

                         } catch (ClassNotFoundException e) {
                                                                      System.out.println("       !");
                                                                       throw new RuntimeException(e);
                           } catch (SQLException e) {
                                        System.out.println("       !");
                                         throw new RuntimeException(e);
                             } finally {
                                   try {
                                         if (con != null) {
                                                               con.close();
                                                              }
                                          } catch (SQLException e) {
                                      } 
                                }
                    }
}

TestServiceDAO 클래스 코드는 다음과 같습니다.
public class TestServiceDAO {
@Test
 public void testFindAll() {
      ServiceDAO serviceDAO = new ServiceDAO();
      serviceDAO.findAll();
       }
 }

서버 주소와 서버의 OS 계정에 따라 업무 계정 정보를 조회할 수 있습니다.ServiceDAO 클래스에서findByUsernameAndHost를 생성하여 서버 주소와 서버의 OS 계정에 따라 업무 계정 정보를 조회합니다.조회할 서버 주소와 서버의 OS 계정을 설정합니다.SQL 문에서 질의의 기준을 설정하고 문자열의 결합 방법을 확인합니다.

좋은 웹페이지 즐겨찾기