-
[Java] 웹 개발자(Java, Spring) 기술 면접 예상 질문Java/용어 2018. 12. 28. 09:44반응형
웹 개발자(Java, Spring)로 취업을 준비하시는 분들을 위해서 기본적인 이론 내용을 정리했습니다. 기본적인 이론 내용과 진행한 프로젝트에 대한 내용을 정리한 후 면접에 보시면 좋은 결과가 있을 것라고 생각합니다. 모두들 좋은 결과가 있으시면 좋겠습니다:)
1. Java
AVA는 썬 마이크로시스템즈(Sun Microsystems)에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어이다.
1) 운영체제에 독립적이다.
일종의 에뮬레이터인 자바가상머신(JVM)을 통해서 가능한 것인데, 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이어서 썬에서는 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있다.
* 자바가상머신(JVM) : 자바를 실행하기 위한 가상 컴퓨터
2) 객체지향언어이다.
객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어라는 평가를 받고 있다.
3) 배우기 쉽다.
자바의 연산자와 기본구문은 C++에서, 객체지향관련 구문은 스몰톡(small talk)이라는 객체지향언어에서 가져왔다. 이 들 언어의 장점은 취하면서 복잡하고 불필요한 부분은 과감히 제거하여 단순화함으로서 쉽게 배울 수 있으며, 간결하고 이해하기 쉬운 코드를 작성할 수 있도록 하였다.
4) 자동 메모리 관리(Garbage Collection)
자바로 작성된 프로그램이 실행되면, 가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다. 가비지컬렉터가 없다면 프로그래머가 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 처리해야할 것이다.
5) 네트워크와 분산처리를 지원한다.
인터넷과 대규모 분산환경을 염두에 둔 까닭인지 풍부하고 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.
6) 멀티쓰레드를 지원한다.
일반적으로 멀티쓰레드(multi-thread)의 지원은 사용되는 운영체제에 따라 구현방법도 상이하면, 처리 방식도 다르다. 그러나 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 관련되 라이브러리(Java API)가 제공되므로 구현이 쉽다.
7) 동적 로딩(Dynamic Loading)을 지원한다.
보통 자바로 작성된 어플리케이션은 여러 개의 클래스로 구성되어 있다. 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 그 외에도 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일하지 않아도 되며, 어플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 어플리케이션을 작성할 수 있다.
2. 객체 지향 프로그래밍(Object-Oriented Programming, OOP)
객체 지향 이론의 기본 개념은 ‘실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.’ 라는 것이다.
주요 특징
1) 코드의 재사용성이 높다.
새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
2) 코드의 관리가 용이하다.
코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
3) 신뢰성이 높은 프로그래밍을 가능하게 한다.
제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
* 비밀번호와 같이 중요한 데이터를 외부에서 접근하지 못하게 하거나 날짜와 월 데이터가 13월이 되는 것을 막을 수 있다.
객체 지향의 4대 특성 : https://tychejin.tistory.com/121
3. 클래스와 객체
클래스의 정의 – 클래스란 객체를 정의해 놓은 것이다.
클래스의 용도 – 클래스는 객체를 생성하는데 사용된다.
객체의 정의 – 실제로 존재하는 것. 사물 또는 개념 (클래스에 정의된 내용대로 메모리에 생성된 것)
객체의 용도 – 객체의 속성과 기능에 따라 다름.
4. 오버로딩(Overloading)과 오버라이딩(Overriding)
4_1) 오버로딩(Overloading)
하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것 (기존의 없는 새로운 메서드를 정의하는 것 )
조건
1) 메서드의 이름이 같아야 한다.
2) 매개변수의 개수 또는 타입이 달라야 한다.
3) 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.
오버로딩(Overloading) : https://tychejin.tistory.com/122
4_2) 오버라이딩(Overriding)
조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것 ( 상속받은 메서드의 내용을 변경하는 것(change, modify) )
조건
1) 선언부가 같아야 한다. (이름, 매개변수, 리턴타입)
2) 접근제어자를 좁은 범위로 변경할 수 없다.
조상의 메서드가 protected라면, 범위가 같거나 넓은 protected나 public으로만 변경할 수 있다.
3) 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
오버라이딩(Overriding) : https://tychejin.tistory.com/123
5. 제어자(modifier)
제어자(modifier)는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 클래스나 멤버변수와 메서드에 주로 사용되며 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있다.
접근 제어자 – public, protected, default, private
그 외의 제어자 – static, final, abstract, native, transient, synchronized, volatile, strictfp
5_1) static – 클래스의, 공통적인
static이 사용될 수 있는 곳 – 멤버변수, 메서드, 초기화 블록
제어자 대상 의미 static 멤버변수 - 모든 인스턴스에 공통적으로 상용되는 클래스변수가 된다.
- 클래스변수는 인스턴스를 생성하지 않고도 사용가능하다.
- 클래스가 메모리에 로드될 때 생성된다.메서드 - 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다.
- static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다.5_2) final – 마지막의, 변경될 수 없는
제어자 대상 의미 final 클래스 - 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다.
- final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.메서드 - 변경될 수 없는 메소드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다. 멤버변수 - 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다. 지역변수 5_3) abstract – 추상의, 미완성의
제어자 대상 의미 abstract 멤버변수 - 클래스 내에 추상메서드가 선언되어 있음을 의미한다. 메서드 - 선언부만 작성하고 구현부는 작성하지 않은 추상메서드임을 알린다. 5_4) 접근 제어자(access modifier)
접근 제어자는 멤버 또는 클래스에 사용되면 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다. 접근 제어자가 default임을 알리기 위해 실제로 default를 붙이지 않는다. 클래스나 멤버변수, 메서드, 생성자에 접근 제어자가 지정되어 있지 않다며, 접근 제어자가 default임을 뜻한다.
제어자 의미 private 같은 클래스 내에서만 접근이 가능하다. default 같은 패키지 내에서만 접근이 가능하다. protected 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다. public 접근 제한이 전혀 없다. 6.추상클래스(abstract class)와 추상메서드(abstract mothod)
6_1) 추상클래스(abstract class)란?
- 클래스가 설계도라면 추상클래스는 ‘미완성 설계도’
- 추상메서드(미완성 메서드)를 포함하고 있는 클래스
- 일반메서드가 추상메서드를 호출 할 수 없다.
- 완성된 설계도가 아니므로 인스턴스를 생성할 수 없다.
- 다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다.
6_2) 추상메서드(abstract mothod)란?
- 선언부만 있고 구현부(몸통, body)가 없는 메서드
- 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우에 사용된다.
- 추상클래스를 상속받는 자손클래스에서 추상메서드의 구현부를 완성해야한다.
7. 인터페이스(interface)란?
- 일종의 추상클래스. 추상클래스(미완성 설계도)보다 추상화 정도가 높다
- 실제 구현된 것이 전혀 없는 기본 설계도.
- 추상메서드와 상수만을 멤버로 가질 수 있다.
- 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다.
- 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용된다.
상속(Inheritance), 인터페이스(Interface) - https://tychejin.tistory.com/124
8. 컬렉션 프레임웍(Collection Framework)
8_1) 컬렉션 프레임웍(Collection Framework)란?
다수의 데이터를 쉽게 처리할 수 있는 표준화된 방법을 제공하는 클래스들
8_2) 컬렉션 프레임웍의 핵심 인터페이스
인터페이스 특징 List 순서가 있는 데이터의 집합, 데이터의 중복을 허용한다.
예) 대기자 명단구현 클래스 : ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다.
예) 양의 정수집합, 소수의 집합구현 클래스 : HashSet, TreeSet 등 Map 키(Key)와 값(Value)의 쌍(pair)으로 이루어진 데이터의 집합으로 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
예) 우편번호, 지역번호(전화번호)구현 클래스 : HashMap, TreeMap, Properties 등 9. 동기화(Synchronization)
멀티쓰레드(multi-thread) 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에 데이터의 일관성(consistency)을 유지하기 위해서는 동기화(synchronization)가 필요하다.
Vector와 Hashtable과 같은 구버전(JDK1.2 이전)의 클래스들은 자체적으로 동기화 처리가 되어 있는데, 멀티쓰레드 프로그래밍이 아닌 경우에는 불필요한 기능이 되어 성능을 떨어뜨리는 요인이 된다. 그래서 새로 추가된 ArrayList와 HashMap과 같은 컬렉션은 동기화를 자체적으로 처리하지 않고 필요한 경우에만 java.util.Collections 클래스의 동기화 메서드를 이용해서 동기화 처리가 가능하도록 변경하였다.
10. ArrayList와 LinkedList
1) 순차적으로 추가/삭제하는 경우에는 ArrayList가 LinkedList보다 빠르다
2) 중간 데이터를 추가/삭제하는 경우에는 LinkedList가 ArrayList보다 빠르다.
11. 반복자(Iterator)
컬렉션 클래스에 저장된 요소들을 나열하는 방법을 제공한다. 컬렉션 클래스의 iterator()를 호출해서 Iterator를 구현한 객체를 얻는다.
메서드 설명 Boolean hasNext() 읽어 올 요소가 남아있는지 확인하다. 있으면 ture, 없으면 false를 반환한다. Object next() 다음 요소를 읽어 온다.
next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다.void remove() next()로 읽어 온 요소를 삭제한다.
next()를 호출한 다음에 remove()를 호출해야한다.(선택적인 기능)12. Stack과 Queue
스택(Stack)은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO(Last In First Out)구조로 되어 있고, 큐(Queue)는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out)구조로 되어 있다.
순차적으로 데이터를 추가하고 삭제하는 스택(Stack)에는 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하지만, 큐는 데이터를 꺼낼 때 항상 첫 번째 저장된 데이터를 삭제하므로, ArrayList와 같은 배열기반의 컬렉션 클래스를 사용한다면 데이터를 꺼낼 때마다 빈 공간을 채우기 위해 데이터의 복사가 발생하므로 비효율적이다. 그래서 큐(Queue)는 ArrayList보다 데이터의 추가/삭제가 쉬운 LinkedList로 구현하는 것이 더 적합하다.
13. 프로세스(process)와 쓰레드(thread)
프로세스(process)란 간단히 말해서 ‘실행 중인 프로그램(program)’이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다.
프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으면 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 그래서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스(multi-threaded process)라고 한다.
* 프로그램 : 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어 모음.
14. 스트림(stream)
자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무엇가가 필요한데 이것을 스트림(stream)이라고 정의했다.
스트림은 연속적인 데이터의 흐름을 물에 비유해서 붙여진 이름인데 여러 가지로 유사한 점이 많다. 물이 한쪽 방향으로만 흐르는 것과 같이 스트림은 단방향통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 그래서 입력과 출력을 동시에 수행하려면 입력을 위한 입력스트림(input stream)과 출력을 위한 출력스트림(output stream), 모두 2개의 스트림이 필요하다.
15. 직렬화(serialization)
직렬화(serialization)란 객체를 데이터 스트림으로 만드는 것을 뜻한다. 다시 얘기하면 객체에 저장된 데이터를 스트림에 쓰기(write)위해 연속적인(serial) 데이터로 변환하는 것을 말한다. 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(deserialization)라고 한다. ( 객체의 인스턴스 변수들의 값을 일렬로 나열하는 것 )
* 객체는 클래스에 정의된 인스터스 변수의 집합이다. 객체에는 클래스변수나 메서드가 포함되지 않는다. 객체는 오직 인스턴스 변수들로만 구성되어 있다.
16. Servlet
16_1) Servlet이란?
- Servlet은 웹에서 Java 프로그래밍을 구현하기 위해서 탄생했다. (웹 개발을 위해 만든 표준)
- Java로 구현된 (CGI – Common Gatway Interface) 라고 말한다.
- HTTP Protocal 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속하여 개발하며, Servlet은 Container에 의해서 실행되고 관리된다.
- HTML 변경 시 Servlet을 재컴파일 해야하는 단점이 있다. (코드 수정 -> 컴파일 -> 클래스 파일)
16_2) Servlet Container란?
- HTTP 요청을 받아서 Servlet을 실행시키고, 그 결과를 사용자 브라우저에게 전달해주는 기능을 제공하는 컴포넌트이다.
- Servlet을 실행하고, 생명주기를 관리하는 역할을 한다.
- Servlet과 웹 서버(Apache, ngin 등)가 서버 통신을 할 수 있는 방법을 제공한다.
- 멀티쓰레드를 지원하여 클라이언트의 다중 요청을 자동적으로 처리해준다.
- 대표적인 Container에는 Tomcat, JBoss 등이 있다.
16_3) Servlet 실행 순서
1. 사용자가 URL을 클릭하면 HTTP Request를 Servlet Container에 보낸다.
2. Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.
3. 사용자가 요청한 URL을 분석하여 어느 서블릿에 대한 요청인지 찾는다. (DD를 참조하여 분석)
4. 컨테이너는 서블릿 service() 메소드를 호출하며, POST, GET여부에 따라 doGet() 또는 doPost()가 호출된다.
5. doGet() or doPost() 메소드는 동적인 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.
6. 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.
*DD (배포서술자, Deployment Descriptor) = web.xml
17. JSP
JSP(JavaServer Pages)는 자바 언어를 기반으로 하는 스크립트 언어로서 자바가 제공하는 기능을 그대로 사용할 수 있다. 또한 ASP, PHP처럼 스크립트 기반으로 개발되어 서버 페이지를 휠씬 쉽게 작성할 수 있으며 서블릿과 함께 구동함으로써 서블릿의 기능을 그대로 사용할 수 있으며, 자바빈즈(JavaBeans), EJB같은 기술로 보다 강력한 객체 지향적 지원이 가능하게 되었다. 또한 JSTL을 지원하게 되면서 웹 프로그램의 가독성이 좋아지고 유지 및 보수가 휠씬 쉬워지는 장점이 있다.
17. Get과 Post 방식
17_1) Get 방식
단순하게 서버 상에 존재하는 간단한 페이지를 요청하거나 게시판 글 목록 페이지에서 해당 페이지에 대한 목록 출력을 요청할 때 페이지 번호와 같이 간단한 파라미터를 전송하는 경우 사용된다. 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 “이름”과 “값”이 결한된 스트링 형태로 전송한다.
* 전송 속도는 빠르지만 보안성이 낮고 길이 제한이 있음
17_2) POST 방식
단순하게 특정한 페이지를 요청하는 것이 아니라 특정 페이지로 많은 야의 파라미터를 전송하여 파라미터에 관한 처리를 할 때 POST 방식으로 요청을 전송한다. 회원 가입 요청, 게시판 글쓰기 요청, 자료실 업로드 등을 처리할 때 사용하는 방식이 모두 POST 방식에 해당한다. 클라이언트에서 서버로 데이터를 전달할 때, html의form 태그를 사용하여 method 속성을 POST로 지정하여야 한다.
* 전송 속도는 느리지만 보안성이 높고 길이 제한이 없음)
18. 세션(Session)과 쿠키(Cookie)
18_1) 세션(Session)
세션이란 서버 측의 컨테이너에서 관리되는 정보이다. 세션의 정보는 컨테이너에 접속해서 종료되기까지(브라우저를 종료할 때까지) 유지되며, 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보는 더 이상 유지되지 않게 설정이 가능하다. 이것은 정보가 서버 측에서 저장된다는 면에서 보안적으로 유리하다. 쿠키 같이 클라이언트에 정보가 저장될 경우 데이터가 노출되어 보안적으로 심각한 문제가 발생할 수 있다. 보안이 필요한 정보를 공유하기 위해서는 서버 측에서 관리될 수 있는 세션을 이용하는 것이 좋다.
* 클라이언트와 서버의 관계(상태)를 유지하기 위한 기능을 제공
18_2) 쿠키(Cookie)
쿠키란 클라이언트 측에서 관리되는 정보를 의미한다. 세션과 비교해 보면 세션은 서버 측에서 관리되지만 쿠키는 클라이언트 정보가 저장된다. 또한 쿠키의 정보는 세션과 달리 브라우저를 종료한다고 해도 생존 기간이 지정되면 생존 기간 동안 데이터가 사라지지 않는다. 쿠키는 하드디스크에 파일로 저장되기 때문에, 그 파일이 남아있는 한 항상 유지된다. 하지만 쿠키는 클라이언트에서 관리되기 때문에 보안적으로 매우 취약한 면을 가지고 있다. 하드디스크에 있는 쿠키 파일을 수정할 염려가 있기 때문이다. 이렇기 때문에 보안이 필요한 정보는 쿠키를 사용하지 않고 세션을 사용한다.
* 클라이언트의 정보를 쿠키 단위로 클라이언트 시스템에 저장하는 기능을 제공
19. MVC란?
MVC(Model – View – Controller)는 소프트웨어 공학에서 어플리케이션을 구성하는 패턴(Pattern) 중 하나이다.
1) Model : 응용프로그램에서 데이터를 처리하는 부분을 말한다. 데이터베이스를 연결하고 데이터를 추출하거나 저장, 삭제, 수정 등의 작업을 수행하는 역할을 한다.
2) View : 화면에 표시되는 부분이다. 추출한 데이터나 일반적인 텍스트 데이터를 표시하거나 입력 폼 또는 사용자와의 상호작용을 위한 인터페이스를 표시하는 영역이다.
3) Controller : 어플리케이션에서 각 요소들의 연결 관계를 설정하고 데이터와 시각적인 부분의 연결 등을 관리한다. 대개 URL로부터 입력되는 정보로부터 어떤 데이터와 뷰를 연결할 지 등을 제어한다.
20. Spring – 제어의 역행(Inversion of Control, IoC) – 대신 해줌
‘제어의 역전’ 또는 ‘역제어’라는 뜻으로 객체에 대한 제어권이 바꿘 것을 의미한다. 기존의 개발자들이 New 연산자, 인터페이스 호출, 팩토리 호출방식으로 객체의 인스턴스를 생성함으로 인스턴스 생성 방법에 대한 제어권을 개발자들이 가지고 있었다. IoC란 인스턴스 생성의 제어를 개발자 본인이 아닌 다른 누군가에게 해주는 컨테이너이다. 어떤 모듈이 제어를 가진다는 것은 ‘어떤 모듈을 사용할 것인지’, ‘모듈의 함수는 언제 호출할 것인지’ 등을 스스로 결정한다는 것을 의미한다. 즉, IoC란 인스턴스의 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다는 뜻이다.
21. Spring – 의존성 주임(Dependency Injection, DI) – 미리 찜해 놓음
DI란 모듈 간의 의존성을 모듈의 외부(컨테이너)에서 주입시켜주는 기능으로 IoC의 한 종류이다. 런 타임시 사용하게 될 각 모듈 간의 의존 관계를 컨테이너가 빈 설정 정보를 바탕으로 자동적으로 연결해 주는 것을 의미한다.
22. Sring – 관점지향 프로그래밍(Aspect Oriented Programming, AOP)
특정 기능이 있는 클래스 안에는 본질적인(핵심적인) 처리만 기술하고, 본질적이지 않은(추가 기능, 부가 기능)기능을 따로 구현하는 개발 방법이다. 따라서 트랜잭션이나 로깅, 보안 인증과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리한다. 기존의 프로그래밍에서는 각 객체별로 처리했던 것을 각 관점별로 외부에서 접근을 하는 것이 AOP의 핵심이다.
23. Java에서 DB 연결하는 방법
23_1) JDBC를 사용하는 방법
오라클(각 다른 DB)에서 제공하는 DB 커넥션 클래스를 이용해서 DB에 접속하는 방법입니다. 사용자가 직접 소스에 아이디와 비밀번호 IP등을 입력하여 커넥션 객체를 생성하고 그것(커넥션객체)을 이용하여 DB를 제어합니다.
23_2) Connection Pool 을 사용하는 방법
사용자(프로그래머)가 소스에서 직접 DB에 연결하는 것이 아니라. 연결은 WAS(Weblogic나 제우스, 톰켓 등을 말합니다)가 하고 사용자는 WAS가 연결한 커넥션을 이용하는 방법입니다. 먼저 Connection Pool에 대한 이해가 필요합니다. 즉, WAS가 스타트 하면서 동시에 오라클에 커넥션 객체를 미리 생성합니다. 프로그래머는 그 객체를 그냥 가져다 쓰는 겁니다.
반응형'Java > 용어' 카테고리의 다른 글
[Java] 스택(Stack)과 큐(Queue) (1) 2020.03.07 [Java] 상속(Inheritance), 인터페이스(Interface) (0) 2019.04.30 [Java] 오버라이딩(Overriding) (0) 2019.04.30 [Java] 오버로딩(Overloading) (0) 2019.04.30 [Java] 객체 지향의 4대 특성 (0) 2019.04.30