'2016/01/27'에 해당되는 글 2건

  1. 2016.01.27 statement란? (1)
  2. 2016.01.27 DAO / VO / DTO란? (2)


DB에 관련해서 statement가 나왔는데 무엇인지 의미 파악이 잘 되지 않아서 검색해보았다.


//statement의 영어 검색을 한국어로 보니 다음과 같이 나온다.


// 위키백과

문 (프로그래밍) 위키백과, 우리 모두의 백과사전. 컴퓨터 프로그래밍에서 문(文)은 명령형 프로그래밍 언어의 가장 작은 독립 요소이다. 프로그램은 하나 이상의 문이 연결되어 형성된다. 문은 식과 같은 내부 요소를 포함할 수 있다. C를 포함한 많은 프로그래밍 언어는 실행 코드와 정의를 포함하는 문과 더불어 문과 정의 사이에 구별을 둔다. 단순 문과 복합 문 사이에 구별을 둘 수 있다. 뒤에 나오는 것은 구성 요소로서의 문을 포함한다. 


영어 버전을 번역기로 돌려도 내용은 비슷하다.


문이 수행 될 몇몇 액션을 표현 명령형 프로그래밍 언어의 최소 독립형 요소이다. 그것은 특정 작업을 수행하기 위해 컴퓨터에 명령 고급 언어로 작성된 명령이다. 


결론내리자면 statement는 명령 문장이라고 얘기할 수도 있겠다.

DB에 작업을 지시하는 QUERY등, 명령 그 자체를 말하는 것이라 파악해도 되겠다.


그래서 statement는 무슨 역할인가 하니...


C와 다른 언어들로 찾아보려니 잘 안나오고, 주로 나오는 것은 JAVA의 Statement 객체였다.

Connection 객체로 연결을 한 후에, QUERY 작업을 수행하기 위해서 사용하고 있었다.


참조 출처 : https://blog.outsider.ne.kr/6


2. DB 연결 

Connection conn = null; conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ORA92", "scott", "tiger");


Connection을 사용하기 위해서는 java.sql.Connection 을 임포트 해주어야 한다. conn이라는 커넥션을 만든 후에 DriverManager의 getConnection을 통해서 DB를 연결해 준다. 

첫 매개변수는 DB연결쪽이다. 

jdbc:oracle:thin:@부분은 동일하게 사용하고 localhost는 위치(자기자신)를 말한다. 다른PC이거나 할 경우는 IP를 입력해 주고 1521은 해당포트이며 ORA92는 오라클의 SID이다. 자신에 맞게 입력해준다. 두번째와 세번째는 오라클의 아이디와 패스워드이다. 

이 연결부는 SQLException예외처리로 Try-Catch로 감싸 주어야 한다. 


3. 쿼리 준비

PreparedStatement psmt = null; psmt = conn.prepareStatement("DB쿼리문"); 혹은 Statement stmt = null; stmt = conn.createStatement("DB쿼리문"); 를 사용한다. 


4. 쿼리 실행 

psmt.executeUpdate(); 로 쿼리를 실행한다. insert, update, delete 등 값을 받아 오지 않는 쿼리문은 executeUpdate를 이용해서 실행해 준다.


이런 설명도 있었다.

Statement 인터페이스 - Statement 인터페이스는 Connection 객체에 의해 프로그램에 리턴되는 객체에 의해 구현되 일종의 메소드 집합을 정의한다. Statement 객체는 Statement 인터페이스를 구현한 객체



정리해보자면 statement는 DB와 연결되는 connection 객체와의 의사 소통을 위해서, DB에게 명령을 내릴 때 그것을 던져주는 역할을 하는 interface로서, 사용자의 명령(文)에 대응하기 위한 객체인 것 같다.



'프로그래밍 > 프로그래밍 공부' 카테고리의 다른 글

스트림(Stream)이란  (0) 2016.02.05
압축  (0) 2016.01.28
statement란?  (1) 2016.01.27
DAO / VO / DTO란?  (2) 2016.01.27
RDBS,DB모델링,파일시스템 표현 차이  (0) 2016.01.26
연산자  (0) 2016.01.22
Posted by GENESIS8

댓글을 달아 주세요

  1. 공원상 2021.01.07 14:06  댓글주소  수정/삭제  댓글쓰기

    너무 잘 보고 있습니다. 감사합니다 ~ ^^

원본 출처 : http://lbass.tistory.com/entry/DAO-%EB%9E%80

http://choijaehyuk.com/128

http://everyit.tistory.com/4


DAO란 Data Access Object의 약어로서 실질적으로 DB에 접근하는 객체를 말한다.

DAO의 사용 이유는 효율적인 커넥션 관리와 보안성 때문이다.


정의

DAO란? 한마디로 Database의 data에 access하는 트랜잭션 객체이다. 일종의 객체라는 것을 잊지말도록 하자. DAO는 저수준의 Logic과 고급 비지니스 Logic을 분리하고, domain logic으로부터 persistence mechanism을 숨기기 위해 사용한다. (적절히 디자인을 하면 모든 domain logic을 바꾸는 대신에 DAO를 바꾸기만 하면 된다.)

persistence 계층 : Database(영구 저장소)에 data를 CRUD하는 계층

// Create , Read , Update , Drop의 줄임말


설명

웹서버는 DB와 연결하기 위해서 매번 커넥션 객체를 생성하는데, 이것을 해결하기 위해 나온것이 컨넥션 풀입니다. ConnectionPool 이란 connection 객체를 미리 만들어 놓고 그것을 가져다 쓰는것입니다. 또 다쓰고 난 후에는 반환해 놓는 것. 하지만 유저 한명이 접속해서 한번에 하나의 커넥션만 일으키지 않고 게시판 하나만 봐도 목록볼때 한번, 글읽을때마다 한번, 글쓸때 한번 등등... 엄청나게 많은 커넥션이 일어나기에, 커넥션풀은 커넥션을 또 만드는 오버헤드를 효율적으로 하기 위해 DB에 접속하는 객체를 전용으로 하나만 만들고, 모든 페이지에서 그 객체를 호출해다 사용한다면? 이렇게 커넥션을 하나만 가져오고 그 커넥션을 가져온 객체가 모든 DB와의 연결을 하는것이 바로 DAO객체입니다^^


DAO(Data Access Object)DB를 사용해 데이터를 조화하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.

 사용자는 자신이 필요한 Interface를 DAO에게 던지고 DAO는 이 인터페이스를
구현한 객체를 사용자에게 편리하게 사용 할 수 있도록 반환해줍니다.

 DB에 대한 접근을 DAO가 담당하도록 하여 데이터베이스 엑세스를 DAO에서만
하게 되면 다수의 원격호출을 통한 오버헤드를 VO나 DTO를 통해 줄일 수 있고
다수의 DB 호출문제를 해결할 수 있습니다. 또한 단순히 읽기만 하는 연산이므로
트랜잭션 간의 오버헤드를 감소할 수 있습니다.(?)


DTO(Data Transfer Object) VO(Value Object)로 바꿔 말할 수 있는데
계층간 데이터 교환을 위한 자바빈즈를 말한다. 여기서 말하는 계층간의
컨트롤러, 뷰, 비즈니스 계층, 퍼시스턴스 계층을 말하며 각 계층간 데이터 교환을
위한 객체를 DTO 또는 VO라고 부른다.
[그런데 VO는 DTO와 동일한 개념이지만 read only 속성을 가짐 ]


대표적인 DTO로는 폼데이터빈, 데이터베이스 테이블빈 등이 있으며, 각 폼요소나, 데이터베이스 레코드의 데이터를 매핑하기 위한 데이터 객체를 말한다. 즉 폼 필드들의 이름을 그대로 가지고 있는 자바빈 객체를 폼 필드와 그대로 매핑하여 비즈니스 계층으로 보낼 때 사용한다. 이런 객체를 DTO라고 부르며 VO(Value Object) 패턴이라고도 한다.
VO 패턴은 데이터 전달을 위한 가장 효율적인 방법이지만, 클래스 선언을 위해 많은 코드가 필요하다는 단점이 있다.

일반적인 DTO는 로직을 갖고 있지 않다. 순수한 데이터 객체이며 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스를 말한다. 여기에 추가적으로 toString(), equals(), 등의 Object 클래스 메소드를 작성할 수 있다.

즉, 계층 간의 데이터 전달에 사용하는 데이터 객체들을 말한다.

1. DTO 클래스 예제

public class DTOBean {

private String name;

private int value;

private String data;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getValue() {
return value;
}

public void setValue(int value) {
this.value = value;
}

public String getData() {
return data;
}

public void setData(String data) {
this.data = data;
}
}

2. DAO 클래스 예제



//DB와 연결할 Connection을 가져온다.
//어떤 DB를 사용할 것이며, 어떤 드라이브와 로그인 정보를 사용할 것인가.
//작업이 끝나면 사용한 리소스를 시스템에 돌려준다.
public class TestDao {

public void add(DTOBean dto) throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
Connection c= DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book");
PreparedStatement ps = c.prepareStatement("insert into users(id,name,password) value(?,?,?)");
ps.setString(1,  dto.getName());
ps.setInt(2,  dto.getValue());
ps.setString(3,  dto.getData());
ps.executeUpdate();
ps.close();
c.close();
}
}


'프로그래밍 > 프로그래밍 공부' 카테고리의 다른 글

압축  (0) 2016.01.28
statement란?  (1) 2016.01.27
DAO / VO / DTO란?  (2) 2016.01.27
RDBS,DB모델링,파일시스템 표현 차이  (0) 2016.01.26
연산자  (0) 2016.01.22
스테레오 타입(Stereotype)  (0) 2016.01.21
Posted by GENESIS8

댓글을 달아 주세요

  1. 2018.02.15 23:36  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. 맛 밀 2018.10.25 20:46 신고  댓글주소  수정/삭제  댓글쓰기

    감사히 담아가겠습니다*^^*