이 글은 MongoDB를 설치했고 Node.js 패키지가 생성되었다는 가정 하에 시작한다.

 

 

1. mongoose 모듈 설치

Node.js 커맨드 창을 켠 뒤, 해당 Node.js 패키지 경로 내에서 mongoDB와 Node.js를 연결해주는 모듈인 mongoose를 설치한다.

 

npm install mongoose 

해당 명령어를 입력한 뒤 위와 같이 보인다면 모듈 설치에 성공했다는 것이다.

 

 

2.

1. DB 생성

mysql workbench에 들어가 관리자인 root로 접속

(관리자인 root 계정을 생성해놓은 상태라고 가정한다)

 

상단의 DB 생성 버튼을 누르고 DB 이름을 설정 > Collaction 설정 > Apply 클릭

(Collaction은 설정하지 않아도 됨)

 

데이터베이스 생성이 완료되었다.

 

 

2. 사용자 생성

좌측의 Users and Privileages > Add Account > Login

로그인시 사용할 Name, Password를 설정한다.

 

Limit to Hosts Matching : default는 %이다.

%는 어느 컴퓨터에서나 계정으로 접속 가능하게 한다는 뜻이다.

나는 해당 컴퓨터(IP)에서만 접속 가능하게 할 것이므로 localhost라고 적었다.

(화면에 localhost라고 적혀 있어야 하는데 local로 잘못 적음)

 

상단의 Schema Privileges > Add Entry 클릭

 

해당 계정에 권한을 부여한다.

 

Selected schema 옵션을 선택하고 방금 만들었던 DB를 선택 > OK를 클릭한다.

 

Schema 부분에 뜬 데이터베이스(스키마)를 클릭한 뒤 아래쪽에 있는 체크박스로 계정에 부여할 권한을 조정한다.

 

데이터베이스를 사용하게 될 사용자가 쿼리를 자칫 잘못 입력하여 데이터베이스 자체를 날려먹을 가능성이 있기 때문에

보통은 Object Right 부분만 권한을 모두 주고, 그 중에서도 DELETE 권한은 주지 않는 경우도 많다.

 

그러나 나는 내가 테스트용으로 사용할 것이기 때문에 DELETE 권한까지 사용할 수 있도록 부여했다.

 

또한 사용자에게 Other Rights의 권한을 부여하게 될 경우 자칫 root의 다른 데이터베이스들까지 보여질 수 있기 때문에

보안 차원의 문제도 발생할 수 있어 보통 Object Rights 부분만 체크한다.

 

부여할 권한을 모두 선택했다면 Apply를 클릭한다.

 

* 반드시 DB 생성 후 사용자 생성을 해야 함 (순서대로 안하면 MySQL이 가끔 꼬임)

 

 

3. DB와 계정 연결

workbench 초기 창에서 상단의 플러스 버튼을 클릭한다.

 

Connection Name은 본인이 잘 알아볼 수 있도록 임의로 설정하고,

Username과 Password는 상단에서 설정했던 사용자 계정을 입력하고 Default Schema는 생성했던 DB명을 입력한다

(스키마는 현재 창에서 바로 입력하지 않아도 되며 추후에 입력해도 상관 없다)

 

바로 OK를 버튼을 누르지 말고 그 전에 먼저 Test Connection 버튼을 눌러 반드시 연동이 잘 되는지 확인한 후 OK를 누른다.

 

정상적으로 연결됐을 때 뜨는 창

 

명령 프롬프트 창에서 계정이 잘 연동됐는지 확인해봤다

결과는 성공.

 

 

4. MySQL 재시작

DB와 계정까지 연결했다면 MySQL을 재시작 하고 다시 로그인해본다.

Atom은 google에서 만든 edit 프로그램이며, git과 바로 연동할 수 있다는 가장 큰 장점을 가진 프로그램이다.



1. 홈페이지 접속하여 해당 OS에 맞는 프로그램 다운로드

https://atom.io/ 사이트 접속 > 홈 화면에 나와 있는 window download 클릭




2. 다운로드 받은 파일 실행

해당 경로에 다운로드 된 파일을 실행한다.


아톰은 그간 사용했던 이클립스에 비해 굉장히 경량의 프로그램이기 때문에 다운로드 시간도 오래 걸리지 않는다.


다운로드 받은 파일을 실행하면 가장 처음으로 실행되는 화면은 이렇게 나올 것이다.



3. 패키지 추가

Atom 상단의 File > Settings > Pasckages 에 접속하여 각자의 취향에 맞는 패키지(플러그인)을 설치할 수 있다.


* 추천하는 패키지

패키지명

 쓰임

 angularjs

 AngularJS 개발시 태그를 자동 완성

 atom-beauty

 HTML, CSS, JS, PHP, Python, Ruby, Java, C 등의 언어를 사용시 indentation을 정리해주는 패키지

 atomic-chrome

 

 code-peek

 선택한 함수가 정의되어 있는 파일을 열어 자동으로 대조

emmet

 HTML, CSS 등 언어 구조, 여러 개의 구조를 가진 태그 자동 완성

(!html 입력시 기본 html 코드 구조 자동 완성)

 file-icons

 파일명 앞에 파일 확장자에 따른 아이콘을 붙여줌

 highlight-selected

 선택한 코드를 강조

 linter

 HTML, CSS, Javascript, TypeScript 등의 코드를 분석하여 문법 및 유효성을 검증

 linter-csslint

 linter css 버전

 linter-eslint

 linter JavaScript 버전

 linter-sass-lint

 linter Sass / SCSS 버전

 minimap

 전체 코드의 프리뷰 기능을 제공하고 툴의 오른쪽에서 코드 전체 윤곽을 확인하거나 위치를 확인

 pigments

 CSS 파일의 #FF530D 형태의 컬러 값을 직관적으로 표시

 tool-bar

 툴바의 아이콘 중 커피스크립트 등의 파일들을 구분이 쉽도록 파일의 특징을 나타낸 아이콘으로 표시

 atom-html-preview

 해당 html 화면을 미리 보여줌

 docblockr

 작성한 스크립트에 대해 설명 추가시 가독성을 높임



 1. mongoDB 홈페이지 접속

https://www.mongodb.com/download-center 홈페이지에 접속하여 각자에 맞는 OS를 선택하고 mongoDB를 다운로드 한다.



2. msi 파일 실행


다운로드 받은 경로로 들어가 파일을 실행한다.





파일이 저장되는 경로를 D드라이브에 저장하기 위해 Complete가 아닌 Custom을 클릭하여 경로를 지정해줬다.

(Complete로 지정할 경우 기본인 C드라이브에 저장됨)






3. DB가 저장될 폴더 생성


mongoDB를 처음 설치하면 기본으로 존재하는 폴더가 bin밖에 없기 때문에 DB가 저장될 data라는 폴더를 임의로 생성하고, (폴더명 상관 없음) data  폴더 안에 db / log 폴더를 추가로 생성한다.



4. 환경 변수 설정

제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 고급 > 환경 변수 > 시스템 변수 > Path 클릭 > 편집 > 변수 값에

mongoDB > bin 폴더가 있는 경로를 그대로 붙여넣기 해준다.



5. mongoDB 실행

cmd 프로그램을 열고 mongoDB가 있는 경로까지 이동한 뒤

d:\mongoDB\bin\mongod.exe --dbpath d:\mongoDB\data

라는 명령어를 이용하여 mongoDB를 실행한다.


이 때, cmd 프로그램은 반드시 관리자 모드에서 실행되어야 하며 위의 cmd 창과 같은 문구가 나오면 연결에 성공했다고 보면 된다. 액세스 허용 창이 뜨면 허용 버튼을 누른다.

그러면 mongoDB\data 폴더에 mongoDB DB 데이터 관련 파일들이 자동으로 설치된다.


ctrl + c 버튼을 누르면 연결 중인 mongoDB가 종료된다.



6. mongod.cfg 파일 작성

1
2
3
4
5
6
7
8
# 데이터베이스 폴더
dbpath = D:\mongoDB\data
# mongdb 포트
port = 27017
# 로그 파일
logpath = D:\mongoDB\data\log\mongo.log
# 웹 관리 사용
rest = true
cs

현재 mongoDB가 설치되어 있는 경로인 D:\mongoDB에 다음과 같은 내용의 mongod.cfg라는 파일을 생성한다.

데이터베이스 폴더와 로그 파일 주소는 각자 설치한 경로에 맞게 고쳐 작성한다.



7. 서비스 등록

mongoDB는 윈도우 서비스에 등록을 지원하기 때문에 서비스를 등록하고 사용하면 훨씬 편리하다.


cmd 프로그램을 관리자 모드로 실행한 후


d:\mongoDB\bin\mongod.exe -f d:\mongoDB\mongod.cfg -install

라는 명령어를 이용하여 서비스를 등록한다.


이 때, cmd 프로그램은 반드시 관리자 모드에서 실행되어야 하며 위의 cmd 창과 같은 문구가 나오면 연결에 성공했다고 보면 된다.


그럼 이제 서비스가 제대로 등록이 되었는지 확인해보자.

시작 > 이PC > 관리 클릭





서비스 및 프로그램 > 서비스 클릭

서비스 항목에서 MongoDB를 임의로 시작 / 중지할 수 있도록 생겼다.


d:\mongoDB\bin\mongod.exe -f d:\mongoDB\mongod.cfg -remove

서비스를 제거하고 싶은 경우에는 위의 명령어를 입력하여 제거하면 된다.



8. mongoDB 시작

위에서 설정한 대로 컴퓨터 관리 > 서비스로 들어가 수동으로 시작 / 중지시켜도 되고,



net start mongodb 

라는 명령어를 입력하고, 아래와 같은 문구가 나오면 시작되었다는 표시이다.


mongod.cfg 파일 내용으로 적었던 localhost 포트 번호 127.0.0.1:27017로 접속하면 현재 드라이버 포트에 접근중이라는 이러한 문구가 뜨고


그에 1000을 더한 28017로 접속하면 정상적으로 접속되었다는 문구가 뜨는데 그 이유는 아직 mongoDB에 대해 깊이 공부하지 않아 잘 모르겠다.

1. 정의

Asynchronos JavaScript And XML

비동기 자바스크립트와 XML을 뜻함

html form을 이용하지 않고 자바스크립트를 통해 서버에 데이터를 요청하는 것

서버 측의 스크립트와 통신하기 위한 XMLHttpRequest 객체를 사용하는 것

서버에서 로딩된 데이터를 페이지에 보여주기 위해 새로운 html 페이지로 갈 필요도 없고, 새로고침을 할 필요도 없음

=> 부분 부분만 로딩되므로 다소 속도가 빠름(비동기성)

 

* Asynchronos : 비동기적

  클라이언트 > 서버로 요청시 요청을 보내놓고 프로그램은 계속 돌아간다는 의미

  먼저 요청한 것에 대한 callback 함수가 먼저 실행되지 않음

 

* 자바스크립트는 웹 브라우저에 대한 스크립트 언어이기 때문에 서버와의 소통 기능은 없으나 ajax는 소통이 가능함

 

* XML : Extensible Markup Language

 데이터 형식의 일종. 확장이 가능한 표시 언어

 

* Markup Language : 데이터에 태그로 항목 표시를 해줌

<person>

<name> ~ </name>

<age> ~ </age>

</person>

 

* XML > Ajax

 

독립적인 기술이라기 보다는, 여러 기술의 묶음을 지칭하는 용어에 가까움

=> html, css, DOM, JS, XML, XSLI, XPath, XMLHttpRequest 등의 기술들이 사용됨

 

마이크로소프트 사에서 처음으로 만든 프레임워크

 

* Ajax의 본래 명칭 : XHR (XML http Request). http request를 서버에 보내는 것

  xml은 JS에서 사용하기에는 다소 불편함 점이 있기 때문에 JS로 서버에 요청을 보낼 시에는 주로 JSON을 많이 사용함

 


* Ajax로 request를 여러개 만들었을 경우, 어떤게 먼저 돌아올지 알 수 없기 때문에 어떤 callback이 먼저 실행될지 알 수 없음

 

 

2. 순서

ㄱ. XHR 객체 생성 : XMLHttpRequest Object 생성

ㄴ. callback 생성

ㄷ. html 메소드, url 결정 : open a request

ㄹ. XHR 메소드로 정보 발송 : send a request

 

 

3. 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ex02</title>
<script type="text/javascript">
    function loadDoc() {
//      ajax 사용하려면 브라우저 내장 함수로 XMLHttpRequest 객체 생성해야 함
//      (과거에는 ActiveXObject라는 생성자 사용하였음)
        var xhr = new XMLHttpRequest();
        
//      통신 후 성공, 실패에 따른 처리가 필요할 경우 서버가 응답했을 때 callback으로 호출되는 property에 함수를 할당하면 됨
//      1. XMLHttpRequest.onreadystatechange() 메소드 이용
//      2. XMLHttpRequest의 이벤트 핸들러를 이용
//      3. EventTarget.addEventListener() 메소드 이용
 
//      XMLHttpRequestEventTarget > XMLHttpRequest
//      <상속 받는 메소드>
//      - onabort() : abort 이벤트 발생시 호출
//      - onerror() : 서버 응답이 200이 아닐 때 호출
//      - onloadstart() : XHR 요청을 시작할 때 호출
//      - onloadend() : XHR 요청이 완료되면 호출됨. onload() 와 다르게 성공/실패 상관 없이 호출됨
//      - onprogres() : onloadstart()와 onloadend() 사이에 호출됨. 파라미터로 ProgressEvent를 전달 받으며 이 객체의 프로퍼티는
//                      브라우저마다 다를 수 있음
//      - onload() : XHR 요청이 성공적으로 완료되면 호출됨. XHR.status가 200일 때만 호출되는 메소드
//      - ontimeout : XHR.timeout으로 설정한 시간 내에 응답이 도착하지 않으면 호출됨.
//                    요청은 실패한 것으로 간주되며 onprogress()와 onload()는 호출되지 않음

 

//      onreadystatechange() : XMLHttpRequest의 프로퍼티로 콜백 함수를 저장함
//                             readyState의 값이 변할 때마다 호출되기 때문에 그대로 실행하면 안 됨
//                             (readyState의 값을 체크하는 조건 분기를 추가해야 원하는 결과를 얻을 수 있음)
        xhr.onreadystatechange = function() {
//          XHLHttpRequest.readyState : XMLHttpRequest의 현재 상태를 의미
//          - 0 : request not initialized
//          - 1 : server connection established
//          - 2 : request received
//          - 3 : progressing request
//          - 4 : request finished and response is ready
 
//          XHLHttpRequest.status : 응답 상태 코드를 숫자로 리턴함(200 : 정상)
            if (xhr.readyState == 4 && xhr.status == 200) {
                document.getElementById("demo").innerHTML = xhr.responseText;
            }
        };
        
//      XMLHttpRequest.open(method, url[, async])        
//      open() : Request의 유형을 지정함. send()로 메세지를 날리기 전, 어디에 어떤 방식으로 작동하는지 정하는 메소드
//               method, url은 필수지만 async는 기본값이 true로 생략할 수 있는 항목
//               async = false인 경우 send() 후 스크립트 진행을 중단하며 서버로부터 응답이 올 때까지 대기함
//      method : HTTP 메소드 타입(get, post)
//      url : 서버 경로
//      async : 비동기 여부(true, false)
        xhr.open("GET""ex03.jsp");
//      XMLHttpRequest.send([string]) : 폼 데이터로 전송할 문자열을 인자로 넣어 보냄
//      send() : 서버로 request 송신. open() 메소드에서 설정한 값에 따라 서버로 데이터를 요청함
//               string은 HTTP 메소드 타입이 POST일 경우에만 명시하며 폼 데이터로 간주됨
//               POST 방식일 때에는 setRequestHeader() 메소드로 컨텐츠 타입을 지정하지 않으면 서버에서 처리가 불가능함
//               string은 반드시 쿼리 스트링 형태로 작성되어야 함
        xhr.send();
    }
</script>
</head>
<body>
    <button onclick="loadDoc()">who r u</button>
    <div id="demo"></div>
</body>
</html>
cs

 

1
2
3
4
5
6
7
8
9
10
11
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ex03</title>
</head>
<body>
    <h2>i am waldo</h2>
</body>
</html>
cs

 

 

 

<자바스크립트 + ajax를 이용한 예제>

'Framework > Spring' 카테고리의 다른 글

eGov :: 전자정부프레임워크란?  (0) 2017.06.21
파일 다운로드  (4) 2017.03.14
Framework :: JSON (JavaScript Object Notation)  (0) 2017.01.10
Framework :: Spring  (0) 2017.01.06
Framework :: JNDI vs JDBC(DBCP)  (0) 2017.01.02

1. 정의

JavaScript Object Notation

자바스크립트에서 데이터(객체)를 받아 할당하여 표현하는 자료 표현 방법

경량 데이터를 xml 보다 간단하게 표현하기 위해 만든 프레임워크

xml 보다 기능이 적기 때문에 파싱 속도도 상대적으로 빠르고 간단하여 클라이언트 사이드(ex. 모바일)에서 유용하게 쓰임

name/value가 쌓인 컬렉션 타입으로 이루어져 있음

Ajax로 서버와 통신시 데이터를 주고 받을 때 데이터 교환을 쉽게 하기 위해 JSON을 많이 사용함

 

* 공식 미디어 타입 : application/json

확장자 : .json

 

* JSON은 length를 알 수 없는 연관배열을 표현하기에 유리하다

=> {key : value}

 

 

2. 장점

주고 받는 데이터의 타입에 제한이 없음

텍스트로 이루어져 있어 사람과 기계 간 둘 다 읽고 쓰기가 쉬움

언어나 플랫폼에 독립적이라 서로 다른 시스템 간에 객체 교환이 쉬움

자바스크립트 문법을 채용했기 때문에 eval() 함수를 이용하여 바로 사용 가능

 

 

3. 사용처

ㄱ. 구성 정보 표시

ㄴ. 통신 프로토콜 실행

 

 

3. xml vs JSON 비교

 

 xml

 JSON

 정의

 구조화된 문서를 전송 가능하게 만든 텍스트 포맷 형식

 장점

 - 태그 구조이기 때문에 작성이 간편함

 가독성이 좋음

 - DTD 등 xml 자체의 기능 확장성

 - 최소한의 정보만 가지고 있음

 => 속도 증가

 - 객체구조 {} / 배열구조 []로 효율적인 데이터 구성 가능

 - parsing이 간편함

 - 일반적인 변수처럼도 사용 가능

 단점

 - 태그 글자라 문서 양이 많아짐

 - 배열, 반복 구조인 경우 불필요한 데이터가 많이 생김

 => parsing 속도 저하

 - 내용의 의미 파악이 힘듦(함축적이라)

 - xml보다는 빠르지만 대용량 전송에는 부적함

 

* xml : Extensible Markup Language

 

 

4. 자료 표현 종류 (대표적으로 분류)

종류

표현법

객체

{Object}

배열

[Array]

변수

name(String) : value

 

 

5. 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>json example</title>
</head>
<body>
    name : <span id="name"></span><br>
    age : <span id="age"></span><br>
    address : <span id="street"></span><br>
    phone : <span id="phone"></span><br>
</body>
<script type="text/javascript">
var employees = {
        "name" : "홍길동",
        "street" : "서울시 서초구 서초동",
        "age" : 33,
        "phone" : "010-1234-5678"};
        
        document.getElementById("name").innerHTML = employees.name;
        document.getElementById("age").innerHTML = employees.age;
        document.getElementById("street").innerHTML = employees.street;
        document.getElementById("phone").innerHTML = employees.phone;
</script>
</html>
cs

 

 

<JSON을 이용하여 연관 배열 데이터를 주고 받는 예제>

'Framework > Spring' 카테고리의 다른 글

파일 다운로드  (4) 2017.03.14
Ajax :: Ajax (Asynchronos JavaScript And XML)  (0) 2017.01.10
Framework :: Spring  (0) 2017.01.06
Framework :: JNDI vs JDBC(DBCP)  (0) 2017.01.02
JDBC :: 드라이버 종류  (0) 2017.01.01

1. 정의

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크

자바 개발을 편하게 할 수 있는 오픈 소스 경량급 애플리케이션 프레임워크

자바 개발을 위한 프레임워크로, 종속 객체를 생성해주고 조립해주는 도구

POJO(Plain Old Java Object)를 자바EE에 의존적이지 않게 연결해주는 역할

 

 

2. 특징

크기, 부하 측면에서 경량

IoC(제어 역행)을 통해 애플리케이션 간의 느슨한 결합을 도모함

AoC(관점지향) 프로그래밍

애플리케이션 생명주기를 관리함

1. JNDI

Java naming and directory interface

디렉토리 서비스에서 제공하는 데이터나 객체를 발견하고 참고(look)하기 위한 자바 API.

DB Pool을 미리 Naming 시켜놓는 방법. 외부에 있는 객체를 가져오기 위한 기술.

클래스에 이름을 부여하고 원격으로 접속하여 클래스 사용시 클래스의 다른 이름 역할을 함.

Tomcat과 같은 WAS를 보면 특정 폴더에 필요한 라이브러리가 있는데, 그것을 사용하기 위해 JNDI를 사용하여 가져온다.

(WAS가 부팅시 JNDI 객체를 등록함)


* JNDI를 사용하던 하지 않던, JDBC는 무조건 필요하다


* Naming Service  종류

- LDAP (Lightweight Directory Access Protocol) : 네트워크 디렉토리 서비스 표준인 x.500을 위한 간단한 형태 제공

- DNS (Domain Name System) : 인터넷 네이밍 시스템. 도메인을 IP 주소로 변환함. 대규모 분산 DB 서버 구조

- NIS (Network Information System) : SUN에서 개발된 네트워크 네이밍 서비스

- CosNaming (Common Object Service) : 코바 응용프로그램을 위한 네이밍 서비스 지원

- JNDI : SUN에서 개발된 자바 기반 객체 등록 서비스. JNDI SPI (Service Provider Interface) 제공

JNDI 서버의 실제 구현 기능은 각 Application Server의 vender가 관리함



2. JDBC (DBCP)

Java database connectivity (Database connection pool)

자바 데이터베이스 연결. 데이터베이스와 연결하기 위한 자바 인터페이스.

DB와 커넥션을 맺고 있는 객체를 관리하는 커넥션풀.


* DBCP : JDBC를 이용하여 생성한 커넥션의 효율성을 높이기 위해 커넥션 객체를 관리하는 것


ㄱ. 프로세스

DriverManager 통한 DB Connection 객체 생성

> Connection 객체에서 statement 객체 생성, 쿼리 실행

> ResultSet

> Connection close


'Framework > Spring' 카테고리의 다른 글

Framework :: JSON (JavaScript Object Notation)  (0) 2017.01.10
Framework :: Spring  (0) 2017.01.06
JDBC :: 드라이버 종류  (0) 2017.01.01
Spring :: STS(Spring tool suite) 설치  (0) 2017.01.01
MyBatis :: Paging 페이징 구현  (7) 2016.07.23

JDBC 드라이버 종류에는 4가지가 있는데, 변천사로 구분된다.


1. Type 1

JDBC - OJDBC Bridge Driver

표준 드라이버 호출들을 대응되는 ODBC 호출로 변환하고, 운영 시스템이 ODBC(Open Database Connectivity) 라이브러리를 통해 ODBC 데이터 소스로 전송한다

JDBC > ODBC > ODBC Driver 순으로 호출로 변환한다

클라이언트에 ODBC 드라이버 + JDBC 드라이버 둘 다 있어야 한다 => 비효율적, 제한적

시스템이 여러 단계를 거쳐 DB 호출을 전달할 뿐 아니라 JDBC 기능은 어떤 ODBC 드라이버라도 다룰 수 있는 것으로만 제한된다

=> 동적으로 드라이버를 다운로드 하는 환경에서는 사용이 어려움



2. Type 2

Native-API Driver : OCI Driver(Partly Java Driver)

일부가 자바로 되어 있는 JDBC 드라이버 (= 자바 드라이버를 사용하여 특정 업체의 API와 통신함)

Type1에서 ODBC API 변환 단계가 생략된 것을 제외하고는 비슷하다


API를 통해 결과를 돌려줄 때, JDBC 드라이버는 JDBC 표준을 따르는 결과를 만들어 프로그램으로 리턴

> 클라이언트에 설치된 로컬 드라이버(DB 만든 벤더가 제공하는 타 형태의 드라이버)가 필요

> oracle, DB2 등 DBMS 벤더들이 제공하는 API를 다시 호출


하게 되는데, Type1과 마찬가지로 클라이언트의 컴퓨터에 정적으로 드라이버를 설치하여 DB와 연동하는 환경에 적합하다



3. Type 3

Net-Protocol Driver (All Java Driver)

완전한 자바 기술. 코드로 이루어진 JDBC 드라이버

JDBC API 표준에 의해 만들어졌기 때문에  DBMS 종류에 관계 없이 사용이 가능하다

DBMS와 독립적인 Net-Protocol을 사용하여 미들웨어 계층의 서버와 통신하고, 이 때 미들웨어 서버는 게이트웨이 역할을 한다

4가지 타입 중 가장 융통성이 뛰어난 타입이기 때문에 동적으로 다운로드 되는 Applet 같은 환경에 더욱 적합하다

클라이언트가 정적으로 이루어졌다고 해도 Type3 사용시 유지보수가 쉬워진다

특별한 요구 사항이 필요한 경우 빼고는 Type3이 적절하다



4. Type4

Native-Protocol Driver (thin Driver)

완전한 자바 기술. 코드로 이루어진 JDBC 드라이버를 의미한다


* Type 3과의 차이점

DBMS 벤더가 표준을 기준으로 기능을 추가/삭제하여 독자적인 형태로 만든 타입이다

> 특정 DBMS에 의존적인 반면, 해당 DBMS만이 제공하는 기능을 사용 가능한 장점이 있다

> 4가지 Type의 드라이버 중 DB에 가장 효율적으로 접근하는 방법을 제공한다

> 추가로 설치해야 할 라이브러리 미들웨어가 필요 없어 배포하기에도 가장 손쉬운 방법으로 제공한다

> 클라이언트가 동적인 환경에서 특정 DBMS만이 제공하는 기능들을 사용할 경우 적합하다

STS는 이클립스 기반의 스프링 개발 플러그인이 설치되어 있는 패키지이다.


Spring tool suite : 스프링 개발 도구

vFabric tc server : 톰캣을 클러스터링해서 사용할 수 있도록 만든 서버

Spring roo : 웹 개발을 간편화시킨 기술

Apache maven : 빌드 도구


STS를 설치하면 위의 4가지도 같이 설치되는데, Spring에서 주로 사용되는 기술이다.



1. STS 사이트 접속


http://spring.io/ 로 접속한다.



2. TOOLS 클릭

해당 페이지의 가장 하단으로 내려가 TOOLS를 클릭한다.



3. download 클릭



4. 사양에 따라 .zip 파일 다운로드


+ Recent posts