반응형

영속성 프레임워크(persistence framework) 란?

자료를 데이터베이스에 저장하는 과정을 도와주고 자동화하는 매개 소프트웨어이다. 
이는 응용 프로그램과 데이터베이스 사이에서 벌어질 수 있는 개념적 간극을 추상화해 준다. 
한마디로, 데이터를 가공하는 자바 객체 층과 데이터를 저장하는 데이터베이스 층 사이를 

매끄럽게 연결하는 이음매이다.

 

1. ORM(Object Relational Mapping)

객체(Object)와 관계형 데이터베이스(RDBMS)을 매핑하여 데이터베이스 테이블을 객체지향적으로 사용하기 위한 기술이다. ORM을 사용한다면, SQL문 작성 없이 매핑하는 설정만으로 DB 테이블내의 데이터를 객체로 전달 받을 수 있다.

 

 - ORM을 사용하기 위한 표준 인터페이스를 모아둔 JPA(Java Persistence API)
 - JPA 구현체로 ORM Framework Hibernate가 있다.

2. SQL Mapper

객체(Object)와 SQL 문을 매핑하여 데이터를 객체화하는 기술을 뜻한다. 객체와 관계를 매핑하기보다는 SQL문의 질의 결과와 객체를 매핑시켜주기 때문에 ORM과는 다른 기술이라고 할 수 있다. 대표적인 프레임워크로는 iBatis, MyBatis, Oracle SQLJ 가 있다.

반응형
반응형

서블릿(Servlet) 이란?

웹 프로그래밍에서 클라이언트의 요청(Request)을 처리하고 그 결과를 다시 클라이언트에게 

전송(Response)하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술


서블릿(Servlet) 특징

  • 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
  • html을 사용하여 요청에 응답한다.
  • Java Thread를 이용하여 동작한다.
  • MVC 패턴에서 Controller로 이용된다.
  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다. UDP보다 속도가 느리다.
  • HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.

서블릿(Servlet) 동작 방식

  • 사용자(클라이언트)가 URL을 클릭하면 HTTP Request를 Servlet Container로 전송한다.
  • HTTP Request를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.
  • web.xml은 사용자가 요청한 URL을 분석하여 어느 서블릿에 대해 요청을 한 것인지 찾는다.
  • 해당 서블릿에서 service메소드를 호출한 후 클리아언트의 POST, GET여부에 따라 doGet() 또는 doPost()를 호출한다.
  • doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보낸다.
  • 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.
반응형
반응형

Struts2 Framework 란?

MVC패턴을 지원하는 오픈소스의 웹 어플리케이션 프레임워크입니다. 


* MVC 패턴

모델(Model), 뷰(View), 컨트롤(Control)의 세 영역으로 나누고 이들의 결합도를 최소화하는 것을 말합니다. 또한 MVC 패턴으로 웹 어플리케이션을 개발하게 될 경우 가장 큰 장점은 실제 업무를 처리하는 비즈니스 로직화면을 처리하는 프레젠테이션 로직분리해서 작업이 가능하다는 것입니다.

 

■ Struts1 과 Struts2의 차이점은?

Struts2는 Struts 와 웹워크가 결합한 형태이며, Struts2는 Struts의 서블릿 방식에서 필터 방식으로의 변화와 Action부분이 POJO(Plain Old Java Object)로 구현할 수 있게 되었습니다. 또한 XML 기반의 환경 설정, 태그 라이브러리 지원, 국제화 지원 등 다양한 유틸리티들을 제공하도록 발전했습니다.

■ Struts2의 특징

1. 완전히 새로운 프레임워크

- 스트럿츠 때와는 다른 웹워크2의 MVC 아키텍처 채용

 

2. 직관적인 개발

- POJO 기반 액션(Action)

 

3. 제로 컨피규레이션 지향

- 기본 값 지원으로 많은 설정 생략 가능

- 어노테이션 사용으로 설정 파일에서 설정 생략

 

4. 신속한 리로딩

- 변경된 환경 설정 파일의 내용을 웹 컨테이너 재시작 없이 리로드

 

5. POJO 액션, POJO 폼

- 프레임워크에 종속되지 않음

 

6. 손쉬운 Ajax(Asynchronous Javascript And XML) 구현

- Dojo 프레임워크 포함

- Ajax 테마 지원 태그

 

7. 다양한 표현식 언어 EL(Expression Language) 지원

- JSTL(Jsp Standard Tag Library) 사용 가능

- OGNL(Object Graph Navigation Language) 지원

 

8. 다양한 리절트 타입의 지원 및 프로파일링

- JSP 외에 프리마커(Freemarker), 밸로시티(Velocity) 등의 사용 가능

- 요청 처리 과정 프로파일링

 

9. 의존성 주입 지원

- 구글 주스(Google Guice) 프레임워크를 사용하여 프레임워크 내부 핵심 객체의 라이프 사이클 관리

반응형
반응형

iBatis 란?

SQL에 기반한 데이터베이스와 자바, 닷넷(.NET), 루비(Ruby) 등을 연결시켜 주는 역할을 하는

영속성 프레임워크(Persistence Framework) 이다.

이러한 연결은 프로그램의 소스코드에서 SQL 문장을 분리하여 별도의 XML 파일로 저장하고

이 둘을 서로 연결시켜주는 방식으로 작동한다.


iBatis 동작 순서

1) 파라미터(자바 빈, Map 또는 원시 래퍼)로서 객체를 제공한다. 파라미터 객체는 쿼리문 내에 입력

값을 설정하거나 쿼리문의 where 절을 설정하는데 사용된다.

 

2) 매핑된 쿼리문을 실행한다. SQL Map 프레임워크는 PreparedStatement 인스턴스를 생성하고,

제공된 파라미터 객체를 사용해 파라미터를 설정한다. 그리고 쿼리문을 실행하고, ResultSet으로부터

결과 객체를 생성한다.

 

3) update의 경우에 영향을 미친 행의 갯수를 반환하고, 조회문일 경우 단일 객체 또는 컬렉션 객체를

반환한다. 결과 객체는 자바 빈, Map, 원시 타입 래퍼 또는 XML이 될 수 있다.

iBatis의 특징

1) SQL 실행 결과를 자바 빈 또는 맵 객체에 맵핑해주는 퍼시스턴스 솔루션

2) SQL을 소스 코드가 아닌 XML로 분리해 관리

3) XML에서 동적 SQL 요소를 사용해 query 문장을 프로그래밍 코딩 없이 자유롭게 변환 할 수 있음.

4) 순수 JDBC 프로그래밍보다 적은 코드만으로 프로그래밍 작성이 가능 

 

 

반응형
반응형

■ 스프링 프레임워크(Spring Framework)의 정의

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크


1. 애플리케이션 프레임워크

특정 계층이나, 기술, 업무 분야에 국한되지 않고 애츨리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말하며, 

애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크입니다.

2. 경량급

다른 프레임워크와 비교하였을때 만들어진 코드가 지원하는 기술수준은 비슷하더라도 그것을 훨씬 빠르고 간편하게 작성하게 해줌으로써 생산성과 품질 면에서 유리하다는 것이 바로 경량급이라는 말로 표현되는 스프링의 특징입니다. 

3. 오픈소스

소스가 모두에게 공개되고, 특별한 라이선스를 취득할 필요없이 얼마든지 가져다 자유롭게 이용해도 된다는 뜻입니다. 소스를 자유롭게 열람하고 자신의 목적에 맞게 사용할 수 있을 뿐만 아니라, 필요하면 맘대로 수정할 수 있고, 수정된 제품과 소스를 다시 공개적으로 배포하는 자유도 허용됩니다.

4. 자바 엔터프라이즈 개발을 편하게

엔터프라이즈 개발에서 필연적으로 요구되는 기술적인 요구를 충족하면서도 개발을 복잡하게 만들지 않는다는 점이

스프링의 뛰어난 면입니다.


■ 스프링 프레임워크(Spring Framework)의 7가지 특징

1. 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.


2. 스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.

 

3. 스프링은 제어의 역전(IoC : Inversion of Control)을 지원한다. 

스프링 컨테이너가 필요에 따라 개발자 대신 Bean 객체들을 관리(제어)해주는 행위를 함으로써,

객체에 대한 제어권이 컨테이너로 역전되었다고 한다.

 

4. 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 

어떤 객체에 스프링 컨터이너가 어너테이션을 통해 또 다른 객체와 의존성을 맺어주는 행위를 의미한다.

 

5. 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.

 

6. 스프링은 영속성과 관련된 다양한 서비스를 지원한다. iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.

 

7. 스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.


■ 스프링 프레임워크(Spring Framework)의 4가지 전략

1. Portable Service Abstraction (서비스 추상화)

트랜잭션 추상화, OXM추상화, 데이터 액세스의 Exception 변환 기능 등 기술적인 복잡함은 추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리한다.

2. 객체지향과 DI(Dependency Injection) 의존관계 주입

Spring은 객체지향에 충실한 설계가 가능하도록 단순한 객체 형태로 개발할 수 있고, DI는 유연하게 확장 가능한 객체를 만들어 두고 그 관계는 외부에서 다이내믹하게 설정해준다.

3. AOP(Aspect Oriented Programming)

AOP는 애플리케이션 로직을 담당하는 코드에 남아 있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해주는 기술

4. POJO(Plain Old Java Object)

POJO는 객체지향 원리에 충실하면서 , 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 객체이다.


■ 스프링 프레임워크(Spring Framework)의 7가지 구성

1. Spring Core 

Spring Framework 의 기본기능을 제공한다.

이 모듈에 있는 BeanFactory는 Spring의 기본 컨테이너면서 스프링 DI의 기반이다.

2. Spring AOP

AOP 모듈을 통해 Asepect 지향 프로그래밍을 지원한다.

AOP 모듈은 스프링 애플리케이션에서 Asepect를 개발할 수 있는 기반을 지원한다.

3. Spring ORM

MyBatis,Hibernate,JPA 등 널리 사용되는 ORM 프레임워크와의 연결고리를 제공한다.

ORM 제품들을 Spring의 기능과 조합해서 사용할 수 있도록 해준다.

4. Spring DAO

JDBC에 대한 추상화 계층으로 JDBC코딩이나 예외처리 하는 부분을 간편화 시켰으며,AOP 모듈을 이용해 트랜잭션 관리 서비스 제공

5. Spring Web

일반적인 웹어플리케이션 개발에 필요한 기본기능을 제공한다.

Webwork나 Struts와 같은 다른 웹어플리케이션 프레임워크와의 통합을 지원한다.

6. Spring Context

Context 모듈은 BeanFactory의 개념을 확장한 것으로 국제화(I18N)메시지, 애플리케이션 생명주기 이벤트, 유효성 검증 등을 지원한다.

7. Spring Web MVC(Model,View,Controller)

사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 어플리케이션을 만드는 경우에 일반적으로 사용되는 패러다임이다.

반응형
반응형

프레임워크(Framework) VS 라이브러리(Library)

프레임워크와 라이브러리의 차이는 제어 흐름에 대한 주도권이 어느쪽에 있는지에 따라서 판단할 수 있습니다. 어플리케이션의 제어권을 누가 쥐고 있느냐에 달려 있습니다.

 

프레임워크전체적인 제어 흐름을 스스로 갖고 있으며 사용자는 프레임워크 안에서 필요한 코드를 작성합니다.

반면에 라이브러리사용자가 전체적인 제어 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있습니다.

 

다시 말해, 라이브러리는 가져다가 사용하고 호출하는 쪽에 의해 제어되고, 프레임워크는 내부에 이미 제어 흐름에 대한 주도성이 내재되어있습니다.

프레임워크는 가져다가 사용한다는 느낌보다 프레임워크에 사용자가 들어가서 사용한다는 느낌으로

이해할 수 있습니다.

반응형

+ Recent posts