개발서적

    [토비의 스프링 - Vol.2] 2장 - 2.4 JPA

    2.4 JPAJava Persistent API의 약자로 EJB 3.0과 함꼐 등장한 JavaEE와 JavaSE를 위한 영속성 관리와 O/R 매핑을 위한 표준 기술오브젝트를 중심으로 개발하는 자바 같은 언어를 통해 접근하려면 불편한 점이 많았음ORM이란 오브젝트와 RDB 사이에 존재하는 개념과 접근 방법, 성격의 차이 떄문에 요구되는 불편한 작업을 제거오브젝트를 가지고 정보를 다루면 ORM 프레임워크가 이를 RDB에 적절한 형태로 변환해주거나 그 반대로 RDB에 저장되어 있는 정보를 자바오브젝트가 다루기 쉬운 형태로 변환해주는 기술ORM을 사용하는 개발자는 모든 데이터를 오브젝트 관점으로 생각가장 믾이 사용되는 대표적인 JPA 구현 제품들JBoss의 하이버네이트아파치 OpenJPA이클립스 EclipseL..

    [토비의 스프링 - Vol.2] 2장 - 2.3 iBatis SqlMaps

    2.3 iBatis SqlMaps자바오브젝트와 SQL 문 사이의 자동매핑 기능을 지원하는 ORM 프레임워크iBatis는 코드 내에서 자바오브젝트만을 이용해 데이터 로직을 작성할 수 있게 해주고 SQL을 별도의 파일로 분리해서 관리해주며, 오브젝트-SQL 사이의 파라미터 매핑 작업을 자동으로 해주기 때문에 많은 인기를 얻고 있는 기술본격적인 ORM인 JPA나 하이버네이트처럼 새로운 DB 프로그래밍 패러다임을 익힐 부담XSQL을 그대로 이용할 수 있으면서도 JDBC 코드 작성의 불편함을 제거해주고, 도메인 오브젝트나 DTO를 중심으로 개발이 가능하다는 장점XML파일로 작성하므로 컴파일이 필요 없고, SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 사람에 맡길 수 있다는 장점SQL 매핑은 스프링 ..

    [토비의 스프링 - Vol.2] 2장 - 2.2 JDBC

    2.2 JDBC자바의 데이터 액세스 기술의 기본이 되는 로우 레벨의 APIJDBC는 표준 인터페이스를 제공하고 각 DB 벤더와 개발팀에서 이 인터페이스를 구현한 드라이버를 제공하는 방식으로 사용JDBC는 모든 자바의 데이터 액세스 기술의 근간 2.2.1 스프링 JDBC 기술과 동작원리스프링 3.0에서는 다섯 가지 종류의 접근 방법을 제공JdbcTemplate는 그중에서 가장 오래된 기초적인 접근 방법 스프링의 JDBC 접근 방법접근 방법 중에서 가장 사용하기 편하고 자주 이용되는 것은 다음 두가지SimpleJdbcTemplatejdbcTemplate과 NameParameterJdbcTemplate에서 가장 많이 사용되는 기능을 통합하고 자바 5 이상의 장점을 최대한 활용할 수 있게 만든 방식방대한 템플릿..

    [토비의 스프링 - Vol.2] 2장 - 2.1 공통개념

    2.1 공통 개념2.1.1 DAO 패턴데이터 액세스 계층은 DAO 패턴이라 불리는 방식으로 분리하는 것이 원칙비즈니스 로직이 없거나 단순하면 DAO와 서비스 계층 통합도 가능의미있는 비즈니스 로직을 가진 애플리케이션이라면 DAO 패턴으로 분리DAO 패턴은 DTO 또는 도메인 오브젝트만을 사용하는 인터페이스를 통해 데이터 액세스 기술을 외부에 노출하지 않도록 만드는 방식가장 중요한 장점은 DAO를 이용하는 서비스 계층의 코드를 기술이나 환경에 종속되지 않는 순수한 POJO로 개발할 수 있다는 점단순한 DTO나 도메인을 사용하기 때문에 목 오브젝트, 테스트 대역 오브젝트로 대체해 단위 테스트가 가능 DAO 인터페이스와 DI인터페이스를 이용해 접근하고 DI 되도록 작업 (액세스 기술과 어떤 API도 노출 X)..

    [토비의 스프링 - Vol.2] 1장 - 1.5.5 프로퍼티 소스

    1.5.5 프로퍼티 소스애플리케이션의 기능과 구현 방법이 변경되지 않으면 구성정보를 변경할 필요는 없음DB 연결정보처럼 환경에 따라 달라지는 것은 빈 메타정보에 두기보다 프로퍼티 파일 같은 별도의 리소스를 사용해 분리하는 편이 바람직한 방법런타임 환경에 따라 빈의 구성이나 구현 클래스가 달라지는 경우라면 프로파일을 사용프로파일을 사용하는 경우에도 외부 리소스에 따라 바뀔 수 있는 DB 연결정보는 메타정보 외부로 독립시킬 필요가 있음필요에 따라 와 ${} 치환자를 사용해 파일로부터 프로퍼티 정보를 가져와서 사용 프로퍼티기본적으로 키와 그에 대응되는 값의 쌍을 의미스프링의 XML에서는 의 name과 value 애트리뷰트를 이용해 프로퍼티 정보 표현DB관련 정보를 XML이나 자바 코드 외부에 둘때 Proper..

    [토비의 스프링 - Vol.2] 1장 - 1.5.4 런타임 환경 추상화와 프로파일

    1.5.4 런타임 환경 추상화와 프로파일외부 리소스나 서버환경과 관련이 깊은 애플리케이션 인프라 빈의 클래스와 속성은 같은 애플리케이션이라고 하더라도 실행환경에 따라 달라질 수 있음환경에 따른 빈 설정정보 변경 전략과 환계보통 개발환경, 테스트환경, 운영환경 정도로 구분같은 개발환경이라도 WAS에서 수동 테스트를 할때와 자동화된 테스트를 수행할 때 런타임 환경 구성을 다르게 가짐빈 설정파일의 변경가장 손쉬운 방법은 메타정보를 담은 XML이나 클래스를 따로 준비하는 방법각 환경에서 스프링을 실행할 때 다른 설정파일을 사용개발이나 유지보수가 계속 진행되면서 설정정보가 지속적으로 달라지는 경우 조금씩 내용이 다른 여러 벌의 설정 메타정보를 관리하는 것은 번거롭고 위험 프로퍼티 파일 활용환경에 따라 달라지는 정..

    [토비의 스프링 - Vol.2] 1장 - 1.5.3 웹 애플리케이션의 새로운 IoC 컨테이너 구성

    1.5.3 웹 애플리케이션의 새로운 IoC 컨테이너 구성웹 환경에서는 보통 루트 애플리케이션 컨텍스트와 서블릿 애플리케이션 컨텍스트의 두 단계로 분리해 사용하는 경우가 일반적web.xml의 와 에 컨텍스트의 설정 관련 정보를 넣어 웹 애플리케이션이 시작될 때 자동으로 생성되게 만contextConfigLocation 파라미터를 이용해 XML 파일의 위치를 지정하거나, 그냥 디폴트 XML 파일인 /WEB-INF/applicationContext.xml을 사용 루트 애플리케이션 컨텍스트 등록를 등록해주면 디폴트 컨텍스트 클래스인 XmlWebApplicationContext를 이용해 애플리케이션 컨텍스트를 만들고 /WEB-INF/applicationContext.xml을 설정파일로 사용XML 설정파일의 위치와..

    [토비의 스프링 - Vol.2] 1장 - 1.5.2 컨테이너 인프라 빈을 위한 자바 코드 메타정보

    1.5.2 컨테이너 인프라 빈을 위한 자바 코드 메타정보스프링의 빈을 역할에 따라 세가지로 구분하려는 이유는 세가지 종류의 빈은 빈 설정 메타정보를 작성하는 방법과 전략을 각각 다르게 가져갈 수 있기 때문이다. IoC/DI 설정 방법의 발전스프링 1.xXML을 이용한 빈 등록 방법을 주로 사용 태그만을 사용할수 있어서 세가지 종류의 빈이 모드 태그로 등록성격이 다른 빈들이 한데 모여있어서 규모가 커지고 빈의 개수가 증가하면 XML 설정파일을 보고 애플리케이션의 구성을 파악하기가 어려움컨테이너 인프라 빈은 클래스 이름이나 속성을 보고 동작 방식을 이해하기 어려움스프링 2.0까다로운 컨테이너 인프라 빈을 쉽게 사용할수 있도록 스키마와 네임스페이스를 가진 전용 태그를 제공, 직접 커스텀 태그를 만들어서 사용 ..