Anyframe

Version 4.1.0

본 문서의 저작권은 삼성SDS에 있으며 Anyframe 오픈소스 커뮤니티 활동의 목적하에서 자유로운 이용이 가능합니다. 본 문서를 복제, 배포할 경우에는 저작권자를 명시하여 주시기 바라며 본 문서를 변경하실 경우에는 원문과 변경된 내용을 표시하여 주시기 바랍니다. 원문과 변경된 문서에 대한 상업적 용도의 활용은 허용되지 않습니다. 본 문서에 오류가 있다고 판단될 경우 이슈로 등록해 주시면 적절한 조치를 취하도록 하겠습니다.


I. Overview
1. 특징
2. 주요 기능
2.1. Lightweight 컨테이너
2.1.1. POJO 기반 개발 지원
2.1.2. Dependency Resolution 지원
2.1.3. Aspect Oriented Programming 지원
2.1.4. Life-cycle 관리
2.1.5. 신규 기능 추가 용이
2.2. 기술 공통 서비스
2.2.1. Generic Service
2.2.2. DynamicModule Service
2.2.3. DataSource 서비스
2.2.4. Query 서비스
2.2.5. ID Generation 서비스
2.2.6. Properties 서비스
2.2.7. Transaction 서비스
2.2.8. Hibernate 서비스
2.2.9. Logging 서비스
2.2.10. Remoting 서비스
2.2.11. Web Services
2.3. 웹 화면 개발 시 필요한 공통 기능
2.3.1. 화면 흐름 제어(Screen Workflow Control)
2.3.2. 공통 클래스 제공
2.3.3. 국제화(i18N), 지역화(L10n) 지원
2.3.4. 사용자 입력값 유효성 검증(Validation)
2.3.5. Tag Library를 통한 View 개선
2.3.6. 에러 처리(Exception Handling)
2.3.7. 요청(Request) 권한 처리
2.3.8. Double Form Submission 방지
2.3.9. 다양한 웹 클라이언트(UI) 연계 지원(X-internet Integration)
II. Installation
3. Installation
3.1. [선택] Maven 설치 및 환경 설정
3.2. Resources
3.3. [필수] Foundation Plugin 설치
3.4. [선택] Other Plugins 설치
3.5. [선택] Plugin 설치 확인
3.6. [선택] 샘플 DB 변경
3.7. [선택] Eclipse WTP만 이용하여 Tomcat 실행
4. Anyframe Plugins
4.1. Anyframe Plugins
4.2. Foundation Plugin 구조
4.3. Other Plugins 구조
4.4. Custom Plugin 추가 정의
5. Anyframe Maven Commands
5.1. anyframe-maven-plugin 정의 확인
5.2. Anyframe Maven Commands
III. Spring
6. IoC(Inversion of Control)
6.1. Basic
6.1.1. Container와 Bean
6.1.2. Container
6.1.2.1. BeanFactory
6.1.2.2. ApplicationContext
6.1.2.3. 설정 메타데이터
6.1.2.4. Spring IoC Container 인스턴스화 시키는 예제
6.1.2.5. XML 기반 설정 메타데이터 조합
6.1.3. Beans
6.1.3.1. Bean
6.1.3.2. Bean 명명하기
6.1.3.3. Bean 인스턴스화
6.1.4. How to refer to Beans
6.1.4.1. 비즈니스 레이어
6.1.4.2. 프리젠테이션 레이어
6.2. Dependencies
6.2.1. Dependency Injection(DI)
6.2.1.1. Setter Injection
6.2.1.2. Constructor Injection
6.2.1.3. Setter Injection vs. Constructor Injection
6.2.1.4. 생성자 인자 분석
6.2.2. Bean Property와 생성자 인자
6.2.2.1. XML 기반의 설정 메타데이터 간략화
6.2.2.2. 혼합된 Property 명(Compound Property) - shortcut 기능 제공
6.2.3. depends-on 속성 사용
6.2.4. Lazy Instantiation
6.2.5. Autowiring
6.2.5.1. 장점
6.2.5.2. 단점
6.2.6. Dependency Check
6.3. Method Injection
6.3.1. Lookup Method Injection
6.3.2. Method Replacement
6.4. Bean과 Container의 확장
6.4.1. Bean Scope
6.4.1.1. Singleton
6.4.1.2. Prototype
6.4.1.3. Other Scopes
6.4.1.4. Custom
6.4.2. Bean Life Cycle
6.4.2.1. Initialization
6.4.2.2. Destruction
6.4.3. Bean 상속
6.4.4. Container 확장
6.4.4.1. Bean 후처리
6.4.4.2. BeanFactory 후처리
6.4.5. ApplicationContext 활용
6.4.5.1. MessageSource를 활용한 국제화(I18N) 지원
6.4.5.2. Event
6.4.5.3. BeanFactory와 ApplicationContext 특징 비교
6.5. XML 스키마 기반 설정
6.6. Resources
7. Aspect Oriented Programming
7.1. AOP 구성 요소
7.1.1. JointPoint
7.1.2. Pointcut
7.1.2.1. Pattern Matching Examples
7.1.2.2. Pointcut Designators
7.1.3. Advice
7.1.4. Weaving 또는 CrossCutting
7.1.5. Aspect
7.2. Annotation based AOP
7.2.1. Configuration
7.2.2. @Aspect 정의
7.2.3. @Pointcut 정의
7.2.4. @Advice 정의
7.2.4.1. Before Advice
7.2.4.2. AfterReturning Advice
7.2.4.3. AfterThrowing Advice
7.2.4.4. After(finally) Advice
7.2.4.5. Around Advice
7.2.5. Aspect 실행
7.3. XML based AOP
7.3.1. Aspect 정의
7.3.2. Pointcut 정의
7.3.3. Advice 정의 및 구현
7.3.3.1. Before Advice
7.3.3.2. AfterReturning Advice
7.3.3.3. AfterThrowing Advice
7.3.3.4. After(finally) Advice
7.3.3.5. Around Advice
7.3.4. Aspect 실행
7.4. AspectJ based AOP
7.4.1. 시작하기 전에
7.4.2. Aspect 정의
7.4.3. Pointcut 정의
7.4.4. Advice 정의
7.4.4.1. Before Advice
7.4.4.2. AfterReturning Advice
7.4.4.3. AfterThrowing Advice
7.4.4.4. After(finally) Advice
7.4.4.5. Around Advice
7.5. AOP Examples
7.5.1. AOP Example - Logging
7.5.1.1. Configuration
7.5.1.2. Aspect 정의
7.5.1.3. Aspect 실행
7.5.2. AOP Example - Exception Transfer
7.5.2.1. Aspect 정의
7.5.2.2. Advice 구현
7.5.3. AOP Example - Profiler
7.5.3.1. Configuration
7.5.3.2. Aspect 정의
7.5.3.3. Aspect 실행
7.5.4. AOP Example - Design Level Assertions
7.5.4.1. Interaction Rule 정의 예제
7.5.4.2. Naming Rule 정의 예제
7.5.4.3. Refactoring
7.6. Resources
8. Spring Remoting
8.1. RMI(Remote Method Invocation)
8.1.1. Server Configuration
8.1.1.1. Samples
8.1.2. Client Configuration
8.1.2.1. Samples
8.2. Hessian
8.2.1. Server Configuration
8.2.1.1. Samples
8.2.2. Client Configuration
8.2.2.1. Samples
8.2.3. Hessian과 Burlap의 차이점
8.3. Burlap
8.3.1. Server Configuration
8.3.1.1. Samples
8.3.2. Client Configuration
8.3.2.1. Samples
8.3.3. Hessian과 Burlap의 차이점
8.4. HTTP Invoker
8.4.1. Server Configuration
8.4.1.1. Samples
8.4.2. Client Configuration
8.4.2.1. Samples
8.5. Resources
9. Annotation
9.1. Bean Management
9.1.1. Auto Detecting
9.1.2. Using Filters to customize scanning
9.1.3. Scope Definition
9.2. Dependency Injection
9.2.1. @Resource
9.2.2. @Autowired
9.2.3. @Qualifier
9.2.4. @Resource vs. @Autowired
9.3. LifeCycle Annotation
9.3.1. @PostConstruct
9.3.2. @PreDestroy
9.3.3. Combining lifecycle mechanisms
9.4. Resources
IV. Spring MVC
10. Architecture
11. Configuration
11.1. web.xml 작성
11.1.1. DispatcherServlet 등록
11.1.2. Spring 설정 파일 위치 등록
11.2. action-servlet.xml 작성
11.2.1. action-servlet.xml 설정
11.2.1.1. Handler Mapping
11.2.1.2. View Resolver
12. Controller
12.1. AbstractController
12.2. MultiActionController
12.3. AbstractCommandController
12.4. SimpleFormController
12.5. UrlFilenameViewController
12.6. ParameterizableViewController
13. View
13.1. Tag library
13.1.1. configuration
13.1.2. form
13.1.3. input
13.1.4. checkbox
13.1.5. checkboxes
13.1.6. radiobutton
13.1.7. radiobuttons
13.1.8. password
13.1.9. select
13.1.10. option
13.1.11. options
13.1.12. textarea
13.1.13. hidden
13.1.14. errors
13.1.15. sample
13.1.15.1. 입력 화면
13.1.15.2. Controller 클래스
13.1.15.3. 출력 화면
13.2. Tiles
13.2.1. Tiles view class 정의
13.2.2. TilesConfigurer 정의
13.2.3. Tiles definition 파일 작성
14. File Upload
15. Internationalization
15.1. 다국어 지원 기능
15.1.1. Locale Resolver를 이용한 Locale 변경
15.1.2. LocaleChangeInterceptor를 이용한 Locale 변경
15.2. Locale Resolver
15.2.1. AcceptHeaderLocaleResolver
15.2.2. CookieLocaleResolver
15.2.3. SessionLocaleResolver
15.2.4. FixedLocaleResolver
16. Validator
16.1. Validator 생성
16.2. Validator 등록
16.3. form:errors 태그 사용
17. Exception Handling
17.1. 특정 error 페이지로 이동하여 에러 메시지 출력
17.2. 에러 페이지에 에러 메시지 출력
17.3. Presentation Layer에서 message key를 이용한 locale 변경
17.3.1. Business Layer의 BaseException 발생
17.3.2. Presentation Layer에서 꺼낸 message key 값에 새로운 Locale로 셋팅
18. Spring Integration
18.1. Listener 등록과 Spring 설정 파일 목록 위치 정의
18.2. Dependency Injection을 통한 Business Service 호출
18.3. Resources
19. Annotation based Spring MVC
19.1. Configuration
19.1.1. Handler 설정
19.1.2. Component Scan 설정
19.1.2.1. Using Filters to customize scanning
19.2. Controller
19.2.1. @Controller
19.2.2. @RequestMapping
19.2.2.1. Form Controller 구현
19.2.2.2. Multi-action Controller 구현
19.2.2.3. Supported argument types
19.2.2.4. Supported return types
19.2.3. @RequestParam
19.2.4. @ModelAttribute
19.2.5. @SessionAttributes
19.3. Dependency Injection
19.4. Preventing Double Form Submission
19.4.1. Annotation을 이용한 Double Form Submission 방지
19.5. Resources
V. Spring MVC Extensions
20. Controller
20.1. ForwardController
20.2. AnyframeFormController
20.3. AnyframeMiPController
21. View
21.1. Tag library
21.1.1. Page Navigator Tag
21.1.2. Message Tag
22. Preventing Double Form Submission
22.1. property 정의하기
22.2. AnyframeFormController를 상속받아 컨트롤러 클래스 구현하기
22.2.1. 페이지 출력 요청 (Ex. /userForm.do)
22.2.2. 폼 submit 요청(Ex. /getUser.do)
22.3. messageSource 추가하기
22.4. Resources
23. JasperReports Integration
23.1. Installation
23.1.1. 다운로드
23.1.2. 설치 환경
23.1.3. Report Designer 설치
23.1.3.1. Configuration
23.2. Report Designer
23.2.1. 목표 결과물
23.2.2. 디자인 파일(JRXML) 작성
23.2.2.1. Step 1 : Open JasperAssistant Perspective
23.2.2.2. Step 2 : Create a new Report
23.2.2.3. Step 3 : Design a report using Palette
23.2.2.4. Step 5 : Preview Report
23.3. Configuration
23.3.1. web.xml 작성하기
23.3.2. jasper-servlet.xml 작성하기
23.4. Controller
23.4.1. HTML Reporting
23.5. Resources
VI. Spring Web Flow
24. configuration
24.1. 기본 설정
24.1.1. FlowRegistry 정의
24.1.1.1. Flow Registry 정의 방법
24.1.1.2. Flow ID 생성
24.1.2. FlowExecutor 정의
24.2. Spring MVC와 연계하기 위한 설정
24.2.1. FlowHandlerAdaptor 정의
24.2.2. FlowHandlerMapping 정의
24.2.3. Spring MVC의 ViewResolver 지정
25. 플로우 정의
25.1. 필수 요소
25.1.1. view-state
25.1.2. transition
25.1.3. end-state
25.2. 메소드 호출
25.2.1. evaluate
25.3. Transition Decision
25.3.1. action-state
25.3.2. decision-state
25.4. Expression Language
25.4.1. Special EL variables
26. View
26.1. model 바인딩
26.2. view backtracking
26.2.1. discard
26.2.2. invalidate
27. Subflow
27.1. subflow-state
27.2. input
27.3. output
28. 플로우 상속
28.1. flow 레벨 상속
28.2. state 레벨 상속
29. Validator
29.1. model 객체 내에 validate 메소드 구현
29.2. validator 클래스 및 메소드 구현
29.3. Resources
VII. Struts
30. Architecture
30.1. Controller Structure
30.2. Request의 흐름
31. Configuration
31.1. web.xml
31.1.1. servlet, servlet-mapping 설정
31.1.1.1. <servlet>설정
31.1.1.2. <servlet-mapping>설정
31.1.1.3. Samples
31.1.2. taglib 설정
31.1.2.1. JSP에서의 설정
31.1.2.2. Samples
31.2. struts-config.xml
31.2.1. controller
31.2.1.1. <controller>설정
31.2.1.2. Samples
31.2.2. message-resources
31.2.2.1. <message-resources>설정
31.2.2.2. Samples
31.2.3. plug-in
31.2.3.1. <plug-in>설정
31.2.3.2. Samples
31.2.4. form-beans
31.2.4.1. <form-beans>설정
31.2.4.2. Samples
31.2.4.3. DynaActionForm
31.2.5. action-mappings
31.2.5.1. <action-mappings>설정
31.2.5.2. <action>의 주요 attribute
31.2.5.3. Samples
31.2.6. global-forwards
31.2.6.1. <global-forwards> 설정
31.2.6.2. Samples
32. Controller
32.1. ActionServlet
32.1.1. ActionServlet의 역할
32.1.2. 초기화 프로세스
32.1.3. 실행 시(ActionServlet 인스턴스가 HTTP Request를 받을 때)
32.1.4. ShutDown 프로세스
32.2. RequestProcessor
32.2.1. RequestProcessor의 역할
32.2.2. process() 메소드의 Request 처리 절차
32.2.3. Sample
32.3. Action
32.3.1. Action의 역할
32.3.2. Action의 구현
32.3.3. Sample
32.4. ActionForward
32.4.1. ActionForward의 역할
32.5. Actions Package
32.5.1. org.apache.struts.actions 패키지에 미리 정의되어 있는 Action
32.5.2. org.apache.struts.actions.ForwardAction
32.5.3. org.apache.struts.actions.IncludeAction
32.5.4. org.apache.struts.actions.DispatchAction
32.5.5. org.apache.struts.actions.LookupDispatchAction
32.5.6. org.apache.struts.actions.SwitchAction
33. View
33.1. Taglib
33.1.1.
33.1.1.1. Taglib의 특징
33.1.1.2. Struts Taglib
33.1.1.3. JSP Standard Tag Library
33.1.1.4. 기타 Taglib
33.2. Tiles
33.2.1. Page Layout 구성 방법
33.2.1.1. 구성 방법
33.2.2. Tiles 설치
33.2.3. Tiles 사용
33.2.3.1. Tiles 적용 시 고려점
33.2.3.2. Tiles Tag Library의 속성
33.2.4. Tiles Layout 정의
33.2.4.1. JSP 로 레이아웃을 정의한 예
33.2.4.2. XML 로 레이아웃을 정의한 예
34. Internationalization
34.1. Internationalization의 특징
34.1.1. Internationalization의 필요성
34.1.2. 지역 (Locale)
34.2. Internationalization Sample
34.2.1. Sample
35. Validator
35.1. Plug-in 등록
35.1.1. struts-config.xml에 plug-in 등록
35.1.2. Samples
35.2. Validator Rules
35.2.1. Struts Validator Rules 기본 기능
35.3. ActionForm
35.3.1. ValidatorForm의 상속
35.3.2. Samples
35.4. formset 설정
35.4.1. formset 설정 방법
35.4.2. Sample
35.5. Action 매핑 설정
35.5.1. struts-config.xml의 Action 매핑 설정
35.5.2. Sample
36. Exception Handling
36.1. Global Level Exception Handling
36.1.1. Global Level Exception Handling의 특징
36.1.2. Samples
36.2. Action Level Exception Handling
36.2.1. Action Level Exception Handling의 특징
36.2.2. Samples
36.3. Resources
VIII. Struts Extensions
37. Controller
37.1. DefaultActionServlet
37.2. DefaultRequestProcessor
37.2.1. DefaultRequestProcessor 기능
37.3. AbstractActionSupport
37.3.1. Action Sample
37.4. DefaultDispathActionSupport
37.4.1. Action Sample
37.5. DefaultForwardAction
37.6. AnyframeMiPAction
37.6.1. Sample Action
38. View
38.1. Tag Library
38.1.1. Page Navigator Tag
38.1.2. Messages Tag
38.1.2.1. Error Page 구성
39. Preventing Double Form Submission
39.1. Double Submit의 개념
39.2. 일반적인 Token 처리
39.3. 선언적인 Token 처리
39.3.1. Samples
39.3.2. 참고 사항
40. Exception Handling
40.1. 선언적인 Exception Handling
40.1.1. Samples
40.2. DefaultBaseExceptionHandler 확장
41. Authentication and Authorization
41.1. Authentication
41.1.1. Samples
41.2. Authorization
41.2.1. 접근 권한 제어 프로세스
41.2.2. Samples
42. Spring Integration
42.1. Configuration
42.1.1. ContextLoaderListener, ContextConfigLocation 정의
42.2. Action
42.3. Resources
IX. Spring BlazeDS Integration
43. Introduction
43.1. Flex
43.2. BlazeDS
44. Flex의 Data 연동
44.1. Flex 기본 Data 연동
44.2. BlazeDS를 이용한 Data연동
44.3. Domain객체와 ASObject의 Mapping
45. Spring BlazeDS Integration 설치
45.1. BlazeDS의 설치
45.2. Spring BlazeDS Integration 설치
45.3. Spring Bean Exporting
45.4. Flex Project 생성
45.5. Remoting Service Call
46. Spring BlazeDS Integration 환경 설정
46.1. Spring BlazeDS MessageBroker 환경 설정
46.2. Exporting Spring Beans
X. Tech.Service
47. Common Configuration
47.1. Anyframe MessageSource
47.1.1. Samples
47.2. Configuration Tag 확장
47.2.1. Samples
48. Generic Service
48.1. Domain 클래스 생성
48.1.1. Query Service 사용 시
48.1.2. Hibernate/JPA 사용 시
48.2. Service 클래스 생성
48.2.1. GenericService
48.2.2. GenericServiceImpl
48.2.3. Samples
48.3. DAO 클래스 생성
48.3.1. GenericDao
48.3.2. GenericDaoQuery
48.3.3. GenericDaoHibernate
48.3.4. Samples
48.4. Resources
49. DynamicModule Service
49.1. Project Structure
49.2. Configuration
49.2.1. module.properties
49.2.1.1. 공통(common) 프로젝트
49.2.1.2. 서비스(service) 프로젝트
49.2.1.3. 웹(web) 프로젝트
49.2.2. web.xml
49.2.3. moduledefinitions.xml
49.2.4. anyframe.properties
49.2.5. impala configuration xml files
49.2.6. context-dynamic.xml
49.3. Build
49.3.1. Eclipse 내에서 웹 어플리케이션 구동
49.3.1.1. anyframe.properties
49.3.1.2. 공통(common) 타입 프로젝트 빌드
49.3.2. WAS에 실제 배포하여 웹 어플리케이션 구동
49.3.2.1. anyframe.properties
49.3.2.2. jar 파일 배포
49.3.2.3. class 파일 배포
49.3.2.4. Default Value Setting (Workspace Root, Version)
49.4. Resources
50. MiPlatform Service
50.1. Controller
50.1.1. MiPController
50.2. Service
50.2.1. MiPService
50.2.2. MiPServiceImpl
50.3. Dao
50.3.1. MiPDao
50.3.2. MiPDaoQuery
50.4. Extension of MiPServiceImpl
50.4.1. [참고] IMiPActionCommand
50.5. Testcase
50.6. Resources
51. FlexService
51.1. Domain Model 클래스 생성
51.1.1. BaseObject
51.2. Service 클래스 생성
51.2.1. FlexService
51.2.2. FlexServiceImpl
51.2.3. FlexService의 상속
51.3. DAO 클래스 생성
51.3.1. FlexDao
51.3.2. FlexDaoQueryImpl
51.4. MXML 생성
52. Cache Service
52.1. DefaultCacheService
52.1.1. Samples
52.2. Resources
53. DataSource Service
53.1. JDBCDataSource Configuration
53.1.1. Samples
53.2. DBCPDataSource Configuration
53.2.1. Samples
53.3. C3P0DataSource Configuration
53.3.1. Samples
53.4. JNDIDataSource Configuration
53.4.1. Samples
53.4.2. jee schema 를 통한 JNDIDataSource 사용
53.5. Test Case
53.6. Resources
54. Hibernate Service
54.1. Resources
54.2. Mapping File
54.2.1. Mapping File의 작성
54.2.1.1. Mapping File 구성
54.2.2. Data Type의 매핑
54.2.2.1. Data Type의 매핑
54.2.3. Hibernate Generator
54.2.3.1. Hibernate 기본 Id Generator
54.2.3.2. 직접생성
54.3. Persistence Mapping
54.3.1. Persistence Mapping - Association
54.3.1.1. One to One Mapping
54.3.1.2. One to Many Mapping
54.3.1.3. Many to Many Mapping
54.3.2. Persistence Mapping - Inheritance
54.3.2.1. Table per Class Hierarchy
54.3.2.2. Table per Subclass
54.3.2.3. Table per Concrete Class
54.4. Basic CRUD
54.4.1. 단건 조회
54.4.2. 단건 저장
54.4.2.1. Tip. A:B=1:m인 경우 A에 대한 save()
54.4.3. 단건 수정
54.4.4. 단건 저장 또는 수정
54.4.5. 단건 삭제
54.4.6. 복수건 저장
54.5. HQL(Hibernate Query Language)
54.5.1. 구성 요소
54.5.1.1. [선택] SELECT 절
54.5.1.2. [필수] FROM 절
54.5.1.3. [선택] WHERE 절
54.5.1.4. [선택] ORDER BY 절
54.5.1.5. [선택] GROUP BY 절
54.5.2. 기본적인 사용 방법
54.5.2.1. Case 1. Basic
54.5.2.2. Case 2. Join
54.5.3. 원하는 객체 형태로 전달
54.5.3.1. Case 1. 특정 객체 형태로 전달
54.5.3.2. Case 2. Map 형태로 전달
54.5.3.3. Case 3. List 형태로 전달
54.5.4. XML에 HQL 정의하여 사용
54.5.5. Pagination
54.5.6. HQL을 이용한 CUD
54.5.6.1. 등록 (Insert)
54.5.6.2. 수정 (Update)
54.5.6.3. 삭제 (Delete)
54.6. Criteria Queries
54.6.1. 기본적인 사용 방법
54.6.1.1. Case 1. Basic
54.6.1.2. Case 2. Join
54.6.2. 원하는 객체 형태로 전달
54.6.2.1. Case 1. 특정 객체 형태로 전달
54.6.2.2. Case 2. Map 형태로 전달
54.6.3. Pagination
54.7. Native SQL
54.7.1. 기본적인 사용 방법
54.7.1.1. Case 1. Basic
54.7.1.2. Case 2. Join
54.7.1.3. Case 3. 검색 조건 명시
54.7.2. XML에 Native SQL 정의하여 사용
54.7.3. Pagination
54.7.4. Callable Statement
54.7.4.1. Case 1. XML에 정의한 Procedure 호출
54.7.4.2. Case 2. Function을 이용한 HQL 실행
54.8. Performance Strategy
54.8.1. Cache
54.8.1.1. 1LC (1 Level Cache)
54.8.1.2. 2LC (2 Level Cache)
54.8.1.3. 분산 Cache
54.8.2. Fetch Strategy
54.8.2.1. Batch를 이용하여 데이터 조회
54.8.2.2. Sub-Query를 이용하여 데이터 조회
54.8.2.3. join fetch를 이용하여 데이터 한꺼번에 조회
54.9. Concurrency
54.9.1. Optimistic Locking
54.9.2. Pessimistic Locking
54.9.3. Offline Locking
54.10. Transaction Management
54.10.1. JDBC - HibernateTransactionManager
54.10.2. JTA - JTATransactionManager
54.11. Spring Integration
54.11.1. Hibernate 속성 정의 파일 작성
54.11.1.1. Session Factory 속성 정의
54.11.1.2. Dynamic HQL, Dynamic Native SQL 실행을 위한 DynamicHibernateService 속성 정의
54.11.2. Mapping XML 파일 작성
54.11.3. DAO 클래스 생성
54.11.3.1. DAO 속성 정의 파일 작성
54.11.3.2. DAO 클래스 개발
54.11.4. Test Code 작성
54.11.5. 선언적인 트랜잭션 관리
54.12. DynamicHibernateService 활용
54.12.1. DynamicHibernateService
54.12.1.1. DynamicHibernate Configuration
54.12.1.2. Dynamic HQL 정의 파일
54.12.1.3. DynamicHibernateService 활용 예제
54.13. Hibernate Configuration
54.13.1. DataSource 속성 정의
54.13.2. Generated SQL 속성 정의
54.13.3. Cache 속성 정의
54.13.4. Logging 속성 정의
54.13.5. 기타 속성 정의
54.13.6. 매핑 파일 정의
55. Id Generation Service
55.1. UUIdGenerationService
55.1.1. Samples
55.2. SequenceIdGenerationService
55.2.1. Samples
55.3. TableIdGenerationService
55.3.1. Samples
55.4. How to use a Generation Strategy
55.4.1. MixPrefix property 정의 방법
55.4.2. Id Generation Strategy를 implements하는 방법
55.5. Resources
56. Logging Service
56.1. Logging Service Configuration 정의하기
56.1.1. appender
56.1.2. logger
56.1.3. root
56.2. Logging Service 사용하기
56.2.1. 기본적인 사용 방법
56.2.2. ResourceBundle을 이용하는 방법
56.3. Tip. SQL문을 로그로 남기기
56.3.1. Step 1. Log4jdbc 라이브러리 다운로드
56.3.2. Step 2. Simple Logging Facade for Java 라이브러리 다운로드
56.3.3. Step 3. DataSource 속성 정의
56.3.3.1. JDBCDataSource를 사용할 경우
56.3.3.2. JNDIDataSource를 사용할 경우
56.3.4. Step 4. Query 서비스 속성 정의
56.3.5. Step 5. Logger 정의
56.4. Resources
57. Properties Service
57.1. PropertiesServiceImpl
57.1.1. Samples
57.2. Sample Property File
57.3. Resources
58. Query Service
58.1. Configuration
58.1.1. jdbcTemplate
58.1.2. sqlRepository
58.1.3. pagingSQLGenerator
58.1.4. lobHandler
58.1.5. Samples
58.1.6. TestCase
58.1.6.1. INSERT
58.1.6.2. SELECT
58.1.6.3. UPDATE
58.1.6.4. DELETE
58.2. Mapping XML Files
58.2.1. table-mapping 정의 방법
58.2.2. queries 정의 방법
58.3. Usecases
58.3.1. Result Mapping
58.3.1.1. 조회 결과 매핑이 별도로 정의되어 있지 않은 경우
58.3.1.2. <result-mapping> 없이 <table-mapping>을 이용할 경우
58.3.1.3. <table-mapping>,<result-mapping>없이 <result>만을 이용할 경우
58.3.1.4. <result-mapping>을 이용할 경우
58.3.1.5. 테스트 코드 Sample
58.3.2. Embedded SQL
58.3.2.1. 속성 정의 파일 Sample
58.3.2.2. 테스트 코드 Sample
58.3.3. OR Mapping
58.3.3.1. 속성 정의 파일 Sample
58.3.3.2. 매핑 XML 파일 Sample
58.3.3.3. OR Mapping시 사용할 매핑 클래스 Sample
58.3.3.4. 테스트 코드 Sample
58.3.4. Dynamic Query
58.3.4.1. 속성 정의 파일 Sample
58.3.4.2. 매핑 XML 파일 Sample
58.3.4.3. 테스트 코드 Sample
58.3.5. Pagination
58.3.5.1. 속성 정의 파일 Sample
58.3.5.2. 매핑 XML 파일 Sample
58.3.5.3. 테스트 코드 Sample
58.3.6. Batch Update
58.3.6.1. 속성 정의 파일 Sample
58.3.6.2. 매핑 XML 파일 Sample
58.3.6.3. 테스트 코드 Sample
58.3.7. Callable Statement
58.3.7.1. 속성 정의 파일 Sample
58.3.7.2. 매핑 XML 파일 Sample
58.3.7.3. 테스트 코드 Sample
58.3.8. CLOB, BLOB
58.3.8.1. Oracle 9i 이상일 경우
58.3.8.2. Oracle 8i일 경우
58.3.9. Named Parameter 'vo' 활용
58.3.9.1. 속성 정의 파일 Sample
58.3.9.2. 매핑 XML 파일 Sample
58.3.9.3. 테스트 코드 Sample
58.3.10. extends AbstractDAO
58.3.10.1. 매핑 XML 파일 Sample
58.3.10.2. DAO 클래스 코드 Sample
58.3.10.3. DAO 클래스 속성 정의 파일 Sample
58.3.10.4. DAO 클래스 테스트 코드 Sample
58.3.11. implements IResultSetMapper
58.3.11.1. 속성 정의 파일 Sample
58.3.11.2. 매핑 XML 파일 Sample
58.3.11.3. ResultSetMapper 코드 Sample
58.3.11.4. 테스트 코드 Sample
58.4. Resources
58.5. Extensions
58.5.1. MiPQueryService 활용
58.5.1.1. MiPQueryService 속성 정의 파일 Sample
58.5.1.2. 매핑 XML 파일 샘플
58.5.1.3. 테스트 코드 Sample
58.5.2. RiaQueryService
58.5.2.1. 속성 정의 파일 Sample
58.6. Resources
59. Scheduling Service
59.1. Quartz Scheduler
59.1.1. Advanced Quartz
59.1.2. Samples
59.2. Resources
60. Service Locator Service
60.1. ServiceLocator
60.1.1. Samples
60.2. Resources
61. Transaction Service
61.1. Declarative Transaction Management
61.1.1. Annotation을 이용한 Transaction 관리
61.1.1.1. Configuration
61.1.1.2. Transaction 관리 대상 정의
61.1.1.3. 테스트 클래스 실행
61.1.2. XML 정의를 이용한 Transaction 관리
61.1.2.1. Configuration
61.1.2.2. Transaction 관리 대상 정의
61.1.2.3. 테스트 클래스 실행
61.1.3. [참고] Propagation Behavior, Isolation Level
61.1.3.1. Propagation Behavior
61.1.3.2. Isolation Level
61.1.4. 테스트 케이스 상세
61.2. Programmatic Transaction Management
61.2.1. TransactionTemplate을 이용한 Transaction 관리
61.2.1.1. Configuration
61.2.1.2. Transaction 관리
61.2.1.3. 테스트 클래스 실행
61.2.2. TransactionManager를 직접 이용한 Transaction 관리
61.2.2.1. Configuration
61.2.2.2. Transaction 관리
61.2.2.3. 테스트 클래스 실행
61.3. Resources
62. Exception Handling
62.1. 서비스 구현 부분에서의 Exception 처리
62.2. Data Access 부분에서의 Exception 처리
62.3. Exception 처리 비용
XI. Web Services
63. Web Services
63.1. Web Services 개념
63.1.1. Architecture
63.1.2. SOAP(Simple Object Access Protocol)
63.1.3. WSDL(Web Services Description Language)
63.1.4. 기술 표준
63.2. 구현 기술
63.2.1. JAX-RPC vs. JAX-WS
63.2.2. XML Schema
63.2.3. 기타 구현 기술
63.3. Web Services Framework
63.3.1. Web Services Framework 종류
63.3.2. Apache CXF 특징
63.4. Tools
64. JAX-WS Frontend
64.1. Web Service 작성
64.1.1. Samples
64.2. Spring Configuration XML - jaxws:endpoint tag 사용
64.2.1. Samples
64.3. Spring Configuration XML - jaxws:server tag 사용
64.3.1. Samples
64.4. Server: JAX-WS Frontend API 사용
64.4.1. Samples
64.5. Spring Configuration XML - jaxws:client tag 사용
64.5.1. Samples
64.6. Client: JAX-WS Frontend API 사용
64.6.1. Samples
64.7. Annotation 작성
64.7.1. @WebService (javax.jws.WebService)
64.7.2. @WebParam (javax.jws.WebParam)
64.7.3. @WebMethod (javax.jws.WebMethod)
64.7.4. @OneWay (javax.jws.OneWay)
64.7.5. @WebResult (javax.jws.WebResult)
64.7.6. Samples
64.8. [참고] Spring Configuration XML Schema
64.9. Resources
65. Simple Frontend
65.1. Web Services 작성
65.1.1. Samples
65.2. Server: Simple Frontend API 코드 사용
65.2.1. Samples
65.3. Spring Configuration XML - simple:server tag 사용
65.3.1. Samples
65.4. Client: Simple Frontend API 코드 사용
65.4.1. Samples
65.5. Spring Configuration XML - simple:client tag 사용
65.5.1. Samples
65.6. [참고] Spring Configuration XML Schema
65.7. Resources
66. Spring Support
66.1. Web Services 작성
66.1.1. Samples
66.2. Spring Configuration XML - simple:server tag 사용
66.2.1. Samples
66.3. Spring Configuration XML - simple:client tag 사용
66.3.1. Samples
66.4. Spring Configuration XML - ClientProxyFactoryBean 사용
66.4.1. Samples
67. Databinding
67.1. JAXB Databinding
67.1.1. Server Configuration
67.1.1.1. Samples
67.1.2. 유의 사항
67.1.2.1. SEI 클래스에서 정의되지 않은 Java Type 클래스가 Runtime시 Databinding되어야 하는 경우
67.2. Aegis Databinding
67.2.1. Server Configuration
67.2.1.1. Samples
67.2.2. Client Configuration
67.2.2.1. Samples
67.3. MTOM Databinding
67.3.1. Server Configuration
67.3.1.1. Samples
67.3.2. Client Configuration
67.3.2.1. Samples
67.3.3. 참고 - MTOM에 관련된 내용
67.4. Resources
68. Asynchronous Invocation
68.1. Server Configuration
68.1.1. Samples
68.2. Client Configuration
68.2.1. Samples
68.3. Resources
69. RESTful Services
69.1. JAX-RS 활용한 RESTful 서비스 구현
69.1.1. Server Configuration
69.1.1.1. Samples
69.1.2. Client Configuration
69.1.2.1. Samples
69.2. HTTP Binding(JRA) 활용한 RESTful 서비스 구현
69.2.1. Server Configuration
69.2.1.1. Samples
69.2.2. Client Configuration
69.2.2.1. Samples
69.2.3. 유의 사항
69.2.3.1. Samples
69.3. HTTP Binding(Naming Convention) 활용한 RESTful 서비스 구현
69.3.1. Server Configuration
69.3.1.1. Samples
69.3.2. Client Configuration
69.3.2.1. Samples
69.4. JAX-WS Provider/Dispatch API 활용한 RESTful 서비스 구현
69.4.1. Server Configuration
69.4.1.1. Samples
69.4.2. Client Configuration
69.4.2.1. Samples
69.5. [참고] Spring Configuration XML Schema
69.6. Resources
70. WAS(Web Application Server) Configuration
70.1. Tomcat
70.1.1. Tomcat 5.5.23
70.2. JEUS
70.2.1. JEUS 5
70.2.2. JEUS 6
70.3. WebLogic
70.3.1. WebLogic 9.2, 10.1