자료를 데이터베이스에 저장하는 과정을 도와주고 자동화하는 매개 소프트웨어이다. 이는 응용 프로그램과 데이터베이스 사이에서 벌어질 수 있는 개념적 간극을 추상화해 준다. 한마디로, 데이터를 가공하는 자바 객체 층과 데이터를 저장하는 데이터베이스 층 사이를
매끄럽게 연결하는 이음매이다.
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 가 있다.
모델(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) 프레임워크를 사용하여 프레임워크 내부 핵심 객체의 라이프 사이클 관리
특정 계층이나, 기술, 업무 분야에 국한되지 않고 애츨리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말하며,
애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크입니다.
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)
사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 어플리케이션을 만드는 경우에 일반적으로 사용되는 패러다임이다.