개념사전
Working Tree 깃에서 버전으로 저장되기 전 단계
Staging Area Working Tree에서 파일을 올리는 곳  여기서 Repository로 올린다
Repository 저장소
add 해당 파일을 깃이 추적할 수 있게 working tree에서 Staging area로 올린다.
commit 변경된 파일을 저장소에 제출하는 역할을 한다.
merge 서로 다른 branch 데이터를 합친다.
push 원격 저장소에 데이터를 업로드한다.
pull 원격 저장소에서 데이터를 다운로드한다.
mybatis 데이터 베이스 연동관련 프레임워크
EL(Expression Language) 표현언어는 자바 코드가 들어간느 표현식을 좀 더 편리하게 사용하기 위해 JSP 2.0부터 도입된 데이터 출력 기능이다.
jstl(JSP Standard Tag Libarary) JSP에서 페이지에서 가장 많이 사용하는 기능을 태그로 제공하며, JSTL 라이브러리를 따로 설치해서 사용한다. 
was asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것을 말한다.
Map과 List의 차이

상호간의 공통점은 둘다 데이터를 저장한다는 것이다.

List의 경우 메모리안의 특정한 동일 공간에 뭉텅이로 저장된다. 내부 구현은 배열로 되어 있어서 순차적으로 단순하게 데이터 저장이 가능하다. Map의 경우 쌍을 이루는 Key와 Value를 이용한다는 것이다.

따라서 단순한 포지션(1~10같은 인덱션)보다는 저장하는 데이터가 특별한 Key값을 가지고 있는 경우 Map을 사용하는게 유리하다.

트랜잭션(Transaction) 트랜잭션은 여러 개의 DML 명령문을 하나의 논리적인 작업 단위로 묶어서 관리하는 것 ALl 또는 Nothing 방식으로 작업 단위가 처리된다. 즉 SQL 명령문들이 모두 정상적으로 처리되었다면 모든 작업의 결과를 데이터베이스에 영구 반영하지만 하나라도 잘못된 것이 있다면 모두 취소한다.
AOP(Aspect Oriented Programming)
AOP를 적용한 은행 기능 구조도

AOP는 메소드 안의 주기능과 보조 기능을 분리한 후 선택적으로 메소드에 적용해서 사용한다는 개념이다.

AOP를 사용하면 전체 코드에 흩어져 있는 보조 기능을 하나의 장소에 모아서 관리할 수 있다. 또 보조 기능을 자신이 원하는 주기능에 선택적으로 적용할 수 있어 코드가 단순해지고 가독성도 향상된다.

 

일단 보조 기능을 만들어 놓고 원할 때 설정한번으로 부품을 가져다 쓰듯이 사용하면된다.

JSP(Java Server Pages)

HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어로 웹 애플리케이션 서버에서 동작한다.

자바 서버 페이지는 실행시에는 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다고 볼 수 있다. 하지만 서블릿과는 달리 HTML 표준에 따라 작성되므로 웹 디자인 하기에 편리하다.

Spring Framework Spring Framework는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링이라고도한다. 동적 웹 사이트를 개발하기 위한 여러가지 서버시를 제공하고 있다. 
HTML(HyperText Markup Language, 문화어: 초본문표식달기언어, 하이퍼본문표식달기언어) 하이퍼 텍스트 마크업 언어로 웹 페이지를 위한 지배적인 마크업 언어이다. HTMl은 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것 뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공한다. 
CSS(Cascading Style Sheets, CSS) 마크업 언어가 실제 표시되는 방법을 기술하는 언어로[1], HTML과 XHTML에 주로 쓰이며, XML에서도 사용할 수 있다. W3C의 표준이며, 레이아웃과 스타일을 정의할 때의 자유도가 높다.

마크업 언어가 웹사이트의 몸체를 담당한다면 CSS는 옷과 액세서리 같은 꾸미는 역할을 담당한다고 할 수 있다. 즉, HTML 구조는 그대로 두고 CSS 파일만 변경해도 전혀 다른 웹사이트처럼 꾸밀 수 있다.

현재 개발 중인 CSS3의 경우 그림자 효과, 그라데이션, 변형 등 그래픽 편집 프로그램으로 제작한 이미지를 대체할 수 있는 기능이 추가되었다. 또한 다양한 애니메이션 기능이 추가되어 어도비 플래시를 어느 정도 대체하고 있다.
Javascript 자바스크립트(영어: JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 사이드 네트워크 프로그래밍에도 사용되고 있다. 자바스크립트는 본래 넷스케이프 커뮤니케이션즈 코퍼레이션의 브렌던 아이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발하였으며, 최종적으로 자바스크립트가 되었다. 자바스크립트가 썬 마이크로시스템즈의 자바와 구문이 유사한 점도 있지만, 이는 사실 두 언어 모두 C 언어의 기본 구문에 바탕을 뒀기 때문이고, 자바와 자바스크립트는 직접적인 관련성이 없다. 이름과 구문 외에는 자바보다 셀프나 스킴과 유사성이 많다.
DBMS 데이터베이스 관리 시스템(영어: database management system, DBMS)은 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다. DBMS은 사용자 또는 다른 프로그램의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있도록 해준다.
GIT 깃(Git /ɡɪt)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. 기하학적 불변 이론을 바탕으로 설계됐고, 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있는 것이 특징이며 데이터 무결성, 분산, 비선형 워크플로를 지원한다.
MVC 패턴이란
웹 애플리케이션에서 일반적인 MVC 구성 요소 다이어그램

모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

모델-뷰-컨트롤러는 응용 프로그램을 세 가지의 구성요소로 나눈다. 각각의 구성요소들 사이에는 다음과 같은 관계가 있다.[1]

▶컨트롤러는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. (예: 워드 프로세서에서 문서를 편집하는 것) 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (문서를 스크롤하는 것)

 

모델은 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다. 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다.

 

뷰는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다.

IDEA 통합 개발 환경 플랫폼
tiles 웹 페이지의 상단이나 하단, 메뉴와 같은 반복적으로 사용되는 부분들에 대한 정보를 한 곳에 모아 둔 프레임 워크
Jquery Query(제이쿼리)는 HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리다.
Ajax

Ajax(Asynchronous JavaScript and XML, 에이잭스)는 비동기적인 웹 애플리케이션의 제작을 위해 아래와 같은 조합을 이용하는 웹 개발 기법이다.

표현 정보를 위한 HTML (또는 XHTML) 과 CSS
동적인 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, 자바스크립트
웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRequest (Ajax 애플리케이션은 XML/XSLT 대신 미리 정의된 HTML이나 일반 텍스트, JSON, JSON-RPC를 이용할 수 있다).
DHTML이나 LAMP와 같이 Ajax는 자체가 하나의 특정한 기술을 말하는 것이 아니며, 함께 사용하는 기술의 묶음을 지칭하는 용어이다. 실제로 AFLAX와 같이 사실상 Ajax에 바탕을 두고 있는 유사/복합 기술들이 속속 나타나고 있다.

Ajax 애플리케이션은 실행을 위한 플랫폼으로 위에서 열거한 기술들을 지원하는 웹 브라우저를 이용한다. 이것을 지원하는 브라우저로는 모질라 파이어폭스, 인터넷 익스플로러, 오페라, 사파리, 구글 크롬 등이 있다. 단, 오페라는 현재 XSL 포맷팅 객체와 XSLT 변환을 지원하지 않는다.[1]

 

기존의 웹 애플리케이션은 브라우저에서 폼을 채우고 이를 웹 서버로 제출(submit)을 하면 하나의 요청으로 웹 서버는 요청된 내용에 따라서 데이터를 가공하여 새로운 웹 페이지를 작성하고 응답으로 되돌려준다. 이때 최초에 폼을 가지고 있던 페이지와 사용자가 이 폼을 채워 결과물로서 되돌려 받은 페이지는 일반적으로 유사한 내용을 가지고 있는 경우가 많다. 결과적으로 중복되는 HTML 코드를 다시 한번 전송을 받음으로써 많은 대역폭을 낭비하게 된다. 대역폭의 낭비는 금전적 손실을 야기할 수 있으며 사용자와 대화(상호 반응)하는 서비스를 만들기 어렵게도 한다.

반면에 Ajax 애플리케이션은 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 쪽에서는 자바스크립트를 쓴다. 웹 서버에서 전적으로 처리되던 데이터 처리의 일부분이 클라이언트 쪽에서 처리 되므로 웹 브라우저와 웹 서버 사이에 교환되는 데이터량과 웹서버의 데이터 처리량도 줄어들기 때문에 애플리케이션의 응답성이 좋아진다. 또한 웹서버의 데이터 처리에 대한 부하를 줄여주는 일이 요청을 주는 수많은 컴퓨터에 대해서 일어나기 때문에 전체적인 웹 서버 처리량도 줄어들게 된다.

장점

  • 페이지 이동없이 고속으로 화면을 전환할 수 있다.
  • 서버 처리를 기다리지 않고, 비동기 요청이 가능하다.
  • 수신하는 데이터 양을 줄일 수 있고, 클라이언트에게 처리를 위임할 수도 있다.

단점

  • Ajax를 쓸 수 없는 브라우저에 대한 문제가 있다.
  • HTTP 클라이언트의 기능이 한정되어 있다.
  • 페이지 이동없는 통신으로 인한 보안상의 문제
  • 지원하는 Charset이 한정되어 있다.
  • 스크립트로 작성되므로 디버깅이 용이하지 않다.
  • 요청을 남발하면 역으로 서버 부하가 늘 수 있음.
  • 동일-출처 정책으로 인해 다른 도메인과는 통신이 불가능하다.
출처 : http://tcpschool.com/ajax/ajax_intro_works

 

출처 : http://tcpschool.com/ajax/ajax_intro_works
Servlet 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. 서블릿은 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 Java 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다.

자바 서블릿은 자바 EE 사양의 일부분으로, 주로 이 기능을 이용하여 쇼핑몰이나 온라인 뱅킹 등의 다양한 웹 시스템이 구현되고 있다.

비슷한 기술로는 펄 등을 이용한 CGI, PHP를 아파치 웹 서버 프로세스에서 동작하게 하는 mod_php, 마이크로소프트사의 IIS에서 동작하는 ASP 등이 있다. CGI는 요청이 있을 때마다 새로운 프로세스가 생성되어 응답하는 데 비해, 자바 서블릿은 외부 요청마다 프로세스보다 가벼운 스레드로써 응답하므로 보다 가볍다. 또한, 자바 서블릿은 자바로 구현되므로 다양한 플랫폼에서 동작한다.
스크립트 언어 스크립트 언어(scripting language)란 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 가리킨다. 스크립트 프로그래밍 언어라고도 한다. 스크립트 언어는 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다. 스크립트(scripts)는 연극 용어인 스크립트에서 유래되었으며 초창기 스크립트 언어는 배치언어(batch languages) 또는 작업 제어 언어(job control language)라고도 불리었다.
[SQL] join

join(조인) 또는 결합 구문은 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다. 따라서 조인은 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다. JOIN은 2개의 테이블에서 각각의 공통값을 이용함으로써 필드를 조합하는 수단이 된다. ANSI 표준 SQL은 네가지 유형의 JOIN을 규정한다.

  • INNER JOIN
  • OUTER JOIN
  • LEFT JOIN
  • RIGHT JOIN
[SQL] Index

대량의 데이터에서 특정 데이터만을 찾기 위해 유지하는 별도의 자료 구조

- 데이터베이스의 응답 시간을 단축

- 사용자의 만족도 향상

 

<인덱스의 종류>

- 자동 생성 인덱스 : 제약 사양에 따른 인덱스(primary key, unique 등)

- 클러스터드 인덱스 : 기본키에 자동적으로 적용

 

크로스 브라우징 라이브러리 JQuery와 같이 특정 기능을 다양한 웹 브라우저에서 동일한 방법으로 사용할 수 있는 라이브러리
Component

컴포넌트란 사전적 의미로 (구성)요소, 부품을 의미한다.

소프트웨어의 경우 독릭접으로 개발되지 않은 경우가 많은 뿐더로도 독립적으로 개발되어도 다른 모듈과의 호환을 생각하지않고 개발한다.

이는 결국 소프트웨어의 재사용을 어렵게하고 유지보수 비용이 크게 증가하는 원인이 된다.

이러한 상황에서 소프트웨어의 재사용의 중요성과 필요성을 위해 나온 기술이 컴포넌트 기술이다.

 

컴포넌트는 앞서 말한 사전적 의미와 같이 독립적인 기능을 수행하고 추후에 교환될 수 있도록 해야한다(부품과 동일)

 

또한 컴포넌트의 세부사항은 겉으로 드러나선 안되는 것이며, 일부러 끄집어내는 시도조차 하지말아야한다.

필요한 것은 해당 컴포넌트(부품)를 쓰기 위해 제공해주는 일종의 장치가 필요하다.

 

스마트폰의 경우 스마트폰과 밧데리가 각각 독립적으로 문제없이 돌아간다고 가정할 때 상호간의 단자 규격만 맞으면 어떠한 밧데리로 교환하더라도 스마트폰은 정상 작동할 것이다.

 

이와 같이 소프트웨어에서도 단자와 같은 일종의 장치가 필요하다.

 객체지향 언어에서는 이러한 장치를 인터페이스로 제공해준다.

인터페이스는 사용자에게 해당 소프트웨어를 쓰기 위한 메서드(장치)를 공개하고, 규격화된 메서드 환경에서 소프트웨어를 개발할 수 있는 환경을 제공해준다.

 

소프트웨어의 세부내용은 인터페이스를 구현받은 클래스가 작성한다.

이렇게 함으로써 객체지향 개념은 정보은닉 개념을 수행할 수 있다.

 

결론적으로 컴포넌트는 각각 독립된 모듈을 의미한다.

컴포넌트 개념을 작 적용한 소프트웨어란 부품(인터페이스를 구현받은 클래스)만 바꾸어 주었을시 오류없이 잘 작동되는 것을 의미한다.

Parameter 이어서 파라미터(매개변수)란 무엇인지 알아봅시다. 파라미터란 메소드 수행에 필요한 입력값을 저장하는 변수 입니다. 예를들어 전화를 거는 메소드를 만든다고 할 때, 우리는 전화를 걸 대상에 대한 입력값이 필요합니다. 이러한 입력값을 기억해두는 변수가 바로 파라미터 입니다. 
DOM

문서 객체 모델(DOM; Document Object Model)은 객체 지향 모델로써 구조화된 문서를 표현하는 형식이다. DOM은 플랫폼/언어 중립적으로 구조화된 문서를 표현하는 W3C의 공식 표준이다. DOM은 또한 W3C가 표준화한 여러 개의 API의 기반이 된다.

DOM은 HTML 문서의 요소를 제어하기 위해 웹 브라우저에서 처음 지원되었다. DOM은 동적으로 문서의 내용, 구조, 스타일에 접근하고 변경하는 수단이었다. 브라우저 사이에 DOM 구현이 호환되지 않음에 따라, W3C에서 DOM 표준 규격을 작성하게 되었다.

DOM은 문서의 기반이 되는 데이터 구조에 제한을 두지 않는다. 잘 구조화된 문서는 DOM을 사용하여 트리 구조를 얻어낼 수 있다. 대부분의 XML 해석기와 XSL 처리기는 트리 구조의 이용에 대응해 개발되었다. 이 같은 구현에서는 문서의 전체 내용이 해석되어 메모리 저장되어야 한다. 때문에 DOM은 문서 요소가 임의적으로 접근되고 변경할 수 있어야 하는 응용 프로그램에 가장 적합하다. 한 번 해석 시 단 한 번의 선택적 읽기/쓰기가 이루어지는 XML 기반 응용 프로그램에서, DOM은 메모리에 상당한 부하를 가져온다. 이 경우처럼 속도와 효율적인 메모리 소비가 중요한 상황일 경우 SAX 모델이 장점을 가진다.

파싱(parsing)

컴퓨터 과학에서 파싱((syntactic) parsing)은 일련의 문자열을 의미있는 토큰(token)으로 분해하고 이들로 이루어진 파스 트리(parse tree)를 만드는 과정을 말한다.

Parsing : 다른 형식으로 저장된 데이터를 원하는 형식의 데이터로 변환하는 것, 형변환가는 다른 의미이다. 저장 구조가 유사한 경우

 

xml, json : 데이터를 표현하는 문자열이다.

json 파싱 : json 형식의 문자열을 의미있는 토큰으로 분해해서 이용할 수 있게 원하는 형식의 데이터로 변환해야 한다.

 

참고로 JSON 데이터는 다음과 같이 구성되어 있다.

그렇기 때문에 아래와 같이 구성된 데이터를 바로 뽑아 쓸수 없기 때문에 파싱하여 사용할 수 있게 처리해야 한다.

 

 {
    "이름": "홍길동",
    "나이": 25,
    "성별": "여",
    "주소": "서울특별시 양천구 목동",
    "특기": ["농구", "도술"],
    "가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"},
    "회사": "경기 수원시 팔달구 우만동"
 }

JSON(Java Script Object Notation)

Notation : 표기법

JSON이란 네트워크를 통해 데이터를 주고받는데 자주 사용되는 경량의 데이터 형식

CRUD

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로서도 사용된다.

JPA(Java Persistence API)

Persistence : 지속성

자바 지속성 API

자바 퍼시스턴스 API또는 자바 지속성 API(Java Persistence API, JPA) 는 자바 플랫폼 SE와 자바 플랫폼 EE를 사용하는 응용프로그램에서 관계형 데이터베이스의 관리를 표현하는 자바 API이다.

기존에 EJB에서 제공되던 엔터티 빈(Entity Bean)을 대체하는 기술이다. 자바 퍼시스턴스 API는 JSR 220에서 정의된 EJB 3.0 스펙의 일부로 정의가 되어 있지만 EJB 컨테이너에 의존하지 않으며 EJB, 웹 모듈 및 Java SE 클라이언트에서 모두 사용이 가능하다. 또한, 사용자가 원하는 퍼시스턴스 프로바이더 구현체를 선택해서 사용할 수 있다.

JPA는 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 여기서 중요하게 여겨야 할 부분은, JPA는 말 그대로 인터페이스라는 점이다. JPA는 특정 기능을 하는 라이브러리가 아니다. 마치 일반적인 백엔드 API가 클라이언트가 어떻게 서버를 사용해야 하는지를 정의한 것처럼, JPA 역시 자바 어플리케이션에서 관계형 데이터베이스를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐이다.

 

Hibernate

Hibernate는 JPA라는 명세의 구현체이다. 인터페이스를 직접 구현한 라이브러리이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다.

Spring Data JPA

Spring Data JPA는 Spring에서 제공하는 모듈 중 하나로, 개발자가 JPA를 더 쉽고 편하게 사용할 수 있도록 도와준다. 이는 JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로써 이루어진다. 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해준다.

Spring Data JPA가 JPA를 추상화했다는 말은, Spring Data JPA의 Repository의 구현에서 JPA를 사용하고 있다는 것이다. 예를 들어, Repository 인터페이스의 기본 구현체인 SimpleJpaRepository의 코드를 보면 아래와 같이 내부적으로 EntityManager을 사용하고 있는 것을 볼 수 있다.

 

☞JPA, Hibernate, Spring Data JAP에 대한 정보 자세히보기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)

 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

인터페이스(interface)

인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다. 컴퓨팅에서 컴퓨터 시스템끼리 정보를 교환하는 공유 경계이다. 이러한 교환은 소프트웨어, 컴퓨터 하드웨어, 주변기기, 사람 간에 이루어질 수 있으며, 서로 복합적으로 이루어질 수도 있다. 터치스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신할 수 있으며 마우스나 마이크로폰과 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다.[1]

Entity

철학 또는 전산학에서의 개체(영어:entity)는 인간의 개념 또는 정보의 세계에서 의미있는 하나의 정보 단위이다.

사물의 본질적인 성질을 속성이라고 하며, 관련있는 속성들이 모여서 의미있는 하나의 정보 단위를 이룬 것이 바로 개체에 해당한다. 파일시스템이나 데이터베이스에서의 레코드가 개체에 해당한다. 개체들 사이의 연관성을 관계라고 하며, 개체와 관계를 나타낸 모델을 개체-관계 모델라고 한다.

속성이라는 용어 대신 영어의 attribute를 그대로 한글로 옮겨 애트리뷰트라고 하기도 하며, 개체라는 용어 대신 영어의 entity를 그대로 한글로 옮겨 엔티티라고 하기도 한다.

DDL(Data Definition Language)

Definition : 정의

데이터 정의 언어(영어: Data Definition Language, DDL)는 컴퓨터 사용자 또는 응용 프로그램 소프트웨어가 컴퓨터의 데이터를 정의하는 컴퓨터 언어 또는 컴퓨터 언어 요소이다. Document Type Definition (DTD)는 순수한 데이터 정의 언어의 예이다 (DTD는 XML의 맥락에서 사용된다). 데이터 정의 언어의 또 다른 예로는 데이터베이스 언어 SQL의 명령어의 부분 집합이 있다.

SQL의 데이터 정의 언어의 문장은 관계형 데이터베이스의 구조를 정의한다. SQL에 의해 정의되는 관계형 데이터베이스의 구조는 쌍(행), 속성(열), 관계(테이블), 인덱스 파일 위치 등 데이터베이스 고유의 특성을 포함한다. SQL의 데이터 정의 언어의 문장의 집합은 관계 데이터베이스 관리 시스템(RDBMS)의 일부이며 SQL 방언에 의해 많은 차이가 있다.

SQL의 데이터 정의 언어의 주요 지침은 다음과 같다.

 

- CREATE - 새로운 데이터베이스 관계 (테이블), VIEW, 인덱스, 저장 프로시저 만들기
- DROP - 이미 존재하는 데이터베이스 관계(테이블), 뷰, 인덱스, 저장 프로시저를 제거한다.
- ALTER - 이미 존재하는 데이터베이스 개체에 대한 변경, RENAME의 역할을 한다.
- TRUNCATE - 관계 (테이블)에서 데이터를 돌이킬 수 없는 제거

DML(Data Manipulation Language)

Manipulation :  조종

데이터 조작 언어(영어: Data Manipulation Language, DML)은 데이터베이스 사용자 또는 응용 프로그램 소프트웨어가 컴퓨터 데이터베이스에 대해 데이터 검색, 등록, 삭제, 갱신을 위한, 데이터베이스 언어 또는 데이터베이스 언어 요소이다. 2007년 현재 가장 대중적 데이터 조작 언어는 SQL 데이터 조작 언어이다. 

 

SQL은 관계형 데이터베이스에 대해 검색 및 업데이트 등의 데이터 조작을 위해 사용된다. 

 

다른 데이터 조작 언어로는 IMS / DL1 데이터 조작 언어와 CODASYL 데이터베이스 (IDMS 등)의 데이터 조작 언어 등이 있다. 데이터 조작 언어는 초기에는 응용 프로그램 소프트웨어에 의해 사용되는 머물러 있었지만, (SQL의 출현에 따라) 데이터베이스 사용자에 따라 사용되어 갔다.

 

데이터 조작 언어는 문장의 첫 단어로 표시하는 기능을 가진다. 데이터 조작 언어에서 문장의 첫 단어는 대부분의 경우 동사이다. SQL의 경우 이러한 동사는 다음과 같다.

- SELECT - 검색 (질의)
- INSERT - 삽입 (등록)
- UPDATE - 업데이트 (수정)
- DELETE - 삭제
데이터 조작 언어는 데이터베이스 공급업체(벤더) 간에 언어 및 기능에서 많은 차이를 가지는 경향이 있다. SQL은 ANSI / ISO에서 제정된 표준이 있다. 그러나 데이터베이스 벤더들은 표준의 범위를 넘어 고유의 확장 기능을 제공하고 있다. 데이터 조작 언어에는 기본적으로 두 가지 종류가 있다.

선언적 데이터 조작 언어
절차적 데이터 조작 언어

 

ORM(Object-relational mapping)

relational : 관계

객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 

객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법이다. 

 

객체 관계 매핑을 가능하게 하는 상용 또는 무료 소프트웨어 패키지들이 있고, 경우에 따라서는 독자적으로 개발하기도한다.

RDB(Database, Relational Database)

관계형 데이터베이스(關係形 Database, Relational Database, 

문화어: 관계자료기지, 관계형자료기지, RDB)는 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스이다. 
1970년 에드거 F. 커드가 제안한 데이터 관계형 모델에 기초하는 디지털 데이터베이스이다.

REST(REpresentational State Transfer)

REpresentational : RE가 붙어서 재발표와 관련된  의미

presentational : 발표완 관련된

State : 상태

Transfer : 옮기다, 이동하다.

엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다.

 

다음 제한 조건을 준수하는 한 개별 컴포넌트는 자유롭게 구현할 수 있다.

  • 클라이언트/서버 구조: 일관적인 인터페이스로 분리되어야 한다
  • 무상태(Stateless): 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안 된다
  • 캐시 처리 가능(Cacheable): WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
    • 잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability와 성능을 향상시킨다.
  • 계층화(Layered System): 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.
  • Code on demand (optional) - 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
  • 인터페이스 일관성: 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다..

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts