At line 1 changed 1 line. |
__Part II:__ [새로운 Managers 작성하기|CreateManager] - 데이타베이스 계층(DAOs)과 통신하며 트랜잭션을 관리하는 Business Facade 들을 작성하는 방법 |
__Part II:__ [새로운 Managers 작성하기|CreateManager_ko] - 데이타베이스 계층(DAOs)과 통신하며 트랜잭션을 관리하는 Business Facade 들을 작성하는 방법 |
At line 3 changed 1 line. |
;:''이 tutorial 은 __Part I:__ [AppFuse에서 새로운 DAO들과 Object들을 작성하기|CreateDAO] 에 의존 되어 있습니다.'' |
;:''이 tutorial 은 __Part I:__ [AppFuse에서 새로운 DAO들과 Object들을 작성하기|CreateDAO_ko] 에 의존 되어 있습니다.'' |
At line 6 changed 1 line. |
이 튜토리얼은 [Part I 에서 작성한 DAO|CreateDAO] 와 연결하기 위한 Business Facade 클래스와 이를 테스트할 JUnit Test 를 작성하는 방법을 알려줍니다. |
이 튜토리얼은 [Part I 에서 작성한 DAO|CreateDAO_ko] 와 연결하기 위한 Business Facade 클래스와 이를 테스트할 JUnit Test 를 작성하는 방법을 알려줍니다. |
At line 8 changed 4 lines. |
[AppFuse]에서는 이런(Business Facade) 클래스를 Manager class 라고 부릅니다.\\ |
이 Manager 클래스의 주된 임무는 persistence (DAO) layer 와 web layer 를 연결하는 것입니다.\\ |
이것은 프리젠테이션 계층과 데이타베이스 계층의 커플링을 줄이는데도 유용합니다.\\ |
또한 Manager 는 당신의 어플리케이션 비즈니스 로직을 넣는 곳이기도 합니다. |
[AppFuse|AppFuse_ko]에서는 이런(Business Facade) 클래스를 Manager class 라고 부릅니다.\\ |
이 Manager 클래스의 주된 임무는 persistence (DAO) layer 와 web layer 를 연결하는 것입니다.\\ |
이것은 프리젠테이션 계층과 데이타베이스 계층의 커플링을 줄이는데도 유용합니다.\\ |
또한 Manager 는 당신의 어플리케이션 비즈니스 로직을 넣는 곳이기도 합니다. |
At line 13 changed 1 line. |
그럼 ManagerTest 와 Manager 을 생성해 봅시다. |
그럼 ManagerTest 와 Manager 을 생성해 봅시다. |
At line 16 changed 4 lines. |
* [1] Manager 클래스를 JUnit으로 테스트 하기 위한 ManagerTest 를 만듭니다 |
* [2] DAO 와 통신하기 위한 Manager 를 만듭니다 |
* [3] Manager 클래스의 그 Transaction 처리를 위한 Spring 프레임워크를 구성합니다. |
* [4] ManagerTest 를 실행합니다 |
* [1] Manager 클래스를 JUnit으로 테스트 하기 위한 ManagerTest 를 만듭니다 |
* [2] DAO 와 통신하기 위한 Manager 를 만듭니다 |
* [3] Manager 클래스의 그 Transaction 처리를 위한 Spring 프레임워크를 구성합니다. |
* [4] ManagerTest 를 실행합니다 |
At line 21 changed 2 lines. |
!!Manager 클래스를 JUnit으로 테스트 하기 위한 ManagerTest 를 만듭니다 [#1] |
[Part I|CreateDAO]에서 우리는 Person object 와 PersonDao 를 만들었습니다 - 그럼 계속해서 진행해 봅시다. |
!!Manager 클래스를 JUnit으로 테스트 하기 위한 ManagerTest 를 만듭니다 [#1] |
[Part I|CreateDAO]에서 우리는 Person object 와 PersonDao 를 만들었습니다 - 그럼 계속해서 진행해 봅시다. |
At line 24 changed 3 lines. |
첫째로, PersonManager 을 위한 JUnit test 를 만들어 봅니다.\\ |
test/service/**/service 에 PersonManagerTest 를 만듭니다. |
이것은 DAO 가 가지고 있는 메소드(get, save, remove) 와 똑같은 메소드들을 테스트 할 것입니다. |
첫째로, PersonManager 을 위한 JUnit test 를 만들어 봅니다.\\ |
test/service/**/service 에 PersonManagerTest 를 만듭니다. |
이것은 DAO 가 가지고 있는 메소드(get, save, remove) 와 똑같은 메소드들을 테스트 할 것입니다. |
At line 28 changed 1 line. |
;:''매우 중복되어 보이지만(왜 모든걸 테스트 하는거야!), 6개월이 지난 후에는 이러한 테스트가 좋다는 것을 알게 될 것입니다.'' |
;:''매우 중복되어 보이지만(왜 모든걸 테스트 하는거야!), 6개월이 지난 후에는 이러한 테스트가 좋다는 것을 알게 될 것입니다.'' |
At line 30 changed 2 lines. |
이 클래스는 ''service'' 패키지에 들어있는 [BaseManagerTestCase|http://raibledesigns.com/downloads/appfuse/api/org/appfuse/webapp/service/BaseManagerTestCase.java.html] 을 반드시 상속받아야 합니다.\\ |
이 부모 클래스(BaseManagerTestCase)는 BaseDaoTestCase 와 비슷한 기능을 제공합니다. |
이 클래스는 ''service'' 패키지에 들어있는 [BaseManagerTestCase|http://raibledesigns.com/downloads/appfuse/api/org/appfuse/webapp/service/BaseManagerTestCase.java.html] 을 반드시 상속받아야 합니다.\\ |
이 부모 클래스(BaseManagerTestCase)는 BaseDaoTestCase 와 비슷한 기능을 제공합니다. |
At line 68 changed 1 line. |
이것으로 뼈대는 완성되었으므로 이제 살만 붙이면 됩니다. |
이것으로 뼈대는 완성되었으므로 이제 살만 붙이면 됩니다. |
At line 70 changed 2 lines. |
그럼 모든것이 다 잘 작동하는지 확인하는 test method 들을 추가해 봅시다. |
여기 우리가 test method 를 작성하는데에 도움이 될만한 글을 [DAO Tutorial|CreateDAO]으로 부터 발췌해서 적어봤습니다. |
그럼 모든것이 다 잘 작동하는지 확인하는 test method 들을 추가해 봅시다. |
여기 우리가 test method 를 작성하는데에 도움이 될만한 글을 [DAO Tutorial|CreateDAO_ko]으로 부터 발췌해서 적어봤습니다. |
At line 73 changed 5 lines. |
;:''이 메소드가 Ant build.xml 파일의 <junit> 태스크에 의해 불려 질려면 몇가지 규칙이 필요합니다. |
;: - 메소드 이름이 test(모두 소문자)로 시작해야 한다 |
;: - public 메소드여야 한다. |
;: - 리턴타입이 void 이여야 한다. |
;: - 전달 인자가 없어야 한다. |
;:''이 메소드가 Ant build.xml 파일의 <junit> 태스크에 의해 불려 질려면 몇가지 규칙이 필요합니다. |
;: - 메소드 이름이 test(모두 소문자)로 시작해야 한다 |
;: - public 메소드여야 한다. |
;: - 리턴타입이 void 이여야 한다. |
;: - 전달 인자가 없어야 한다. |
At line 79 changed 1 line. |
;:여기 CRUD 테스트를 위한 간단한 테스트 코드가 있습니다.\\중요한 것은 각각의 메소드들은 자발적으로 일어난다는 점 입니다.'' |
;:여기 CRUD 테스트를 위한 간단한 테스트 코드가 있습니다.\\중요한 것은 각각의 메소드들은 자발적으로 일어난다는 점 입니다.'' |
At line 81 changed 1 line. |
다음의 코드를 PersonManagerTest.java 에 추가 합니다: |
다음의 코드를 PersonManagerTest.java 에 추가 합니다: |
At line 141 changed 1 line. |
PersonManager 인터페이스를 아직 작성하지 않았기 때문에 이 class 는 컴파일 되지 않을 겁니다.\\ |
PersonManager 인터페이스를 아직 작성하지 않았기 때문에 이 class 는 컴파일 되지 않을 겁니다.\\ |
At line 145 changed 3 lines. |
!!DAO 와의 대화를 위한 Manager 를 만듭니다 [#2] |
첫째로, src/service/**/service 디렉토리에 PersonManager.java interface 를 만듭니다. 그리고 기본적인 CRUD 메소드를 정의합니다. |
setPersonDao 메소드는 PersonManagerTest 에서 DAO 를 세팅하기 위해서 만들어진 메소드로서 다른 곳에서는 거의 사용될 일이 없습니다. |
!!DAO 와의 대화를 위한 Manager 를 만듭니다 [#2] |
첫째로, src/service/**/service 디렉토리에 PersonManager.java interface 를 만듭니다. 그리고 기본적인 CRUD 메소드를 정의합니다. |
setPersonDao 메소드는 PersonManagerTest 에서 DAO 를 세팅하기 위해서 만들어진 메소드로서 다른 곳에서는 거의 사용될 일이 없습니다. |
At line 149 changed 1 line. |
''요점만 보여주기 위하여 아래 클래스에 JavaDoc 들을 삭제했습니다.'' |
''요점만 보여주기 위하여 아래 클래스에 JavaDoc 들을 삭제했습니다.'' |
At line 166 changed 1 line. |
자 이제 PersonManager 의 메소드들을 구현할 PersonManagerImpl 을 만들어 봅시다.\\ |
자 이제 PersonManager 의 메소드들을 구현할 PersonManagerImpl 을 만들어 봅시다.\\ |
At line 168 changed 2 lines. |
우선 src/service/**/service/impl 에 PersonManagerImpl.java 파일을 만듭시다.\\ |
그리고 이 클래스는 BaseManager 를 상속(extend)받고 PersonManager 를 구현(implement)하도록 합니다. |
우선 src/service/**/service/impl 에 PersonManagerImpl.java 파일을 만듭시다.\\ |
그리고 이 클래스는 BaseManager 를 상속(extend)받고 PersonManager 를 구현(implement)하도록 합니다. |
At line 200 changed 3 lines. |
setPersonDao 메소드는 PersonDao 와 이 Manager 를 연결하기 위하여 Spring 프레임워크에 의해 호출됩니다. |
위 연결은 Step 3[3]에서 applicationContext-service.xml 파일에서 설정할 것입니다. |
이제 "ant compile-service" 로 컴파일 할수 있습니다. |
setPersonDao 메소드는 PersonDao 와 이 Manager 를 연결하기 위하여 Spring 프레임워크에 의해 호출됩니다. |
위 연결은 Step 3[3]에서 applicationContext-service.xml 파일에서 설정할 것입니다. |
이제 "ant compile-service" 로 컴파일 할수 있습니다. |
At line 204 changed 1 line. |
그럼 이제 services layer 을 위한 Spring 설정파일을 수정해 봅시다. |
그럼 이제 services layer 을 위한 Spring 설정파일을 수정해 봅시다. |
At line 206 changed 3 lines. |
!!Manager 클래스의 그 Transaction 처리를 위한 Spring 프레임워크를 구성합니다. [#3] |
PersonManager 와 PersonManagerImpl 을 Spring 프레임워크에 알리기 위해 src/service/**/service/applicationContext-service.xml 파일을 열어서 다음과 같은 라인을 추가 합니다. |
(personManager 을 위한 정의가 주석처리 되어있을 겁니다. 다음 라인을 추가 하지 않고 그 주석을 해제해도 됩니다.) |
!!Manager 클래스의 그 Transaction 처리를 위한 Spring 프레임워크를 구성합니다. [#3] |
PersonManager 와 PersonManagerImpl 을 Spring 프레임워크에 알리기 위해 src/service/**/service/applicationContext-service.xml 파일을 열어서 다음과 같은 라인을 추가 합니다. |
(personManager 을 위한 정의가 주석처리 되어있을 겁니다. 다음 라인을 추가 하지 않고 그 주석을 해제해도 됩니다.) |
At line 218 changed 1 line. |
"parent" 속성에 참조된 [TransactionProxyFactoryBean|http://www.springframework.org/docs/api/org/springframework/transaction/interceptor/TransactionProxyFactoryBean.html] bean 정의는 모든 기본적인 트랜잭션 속성을 가지고 있습니다. |
"parent" 속성에 참조된 [TransactionProxyFactoryBean|http://www.springframework.org/docs/api/org/springframework/transaction/interceptor/TransactionProxyFactoryBean.html] bean 정의는 모든 기본적인 트랜잭션 속성을 가지고 있습니다. |
At line 220 changed 1 line. |
!!ManagerTest 를 실행합니다. [#4] |
!!ManagerTest 를 실행합니다. [#4] |
At line 222 changed 1 line. |
모든 파일을 저장하고 "ant test-service -Dtestcase=PersonManager" 태스크를 실행해 보세요. |
모든 파일을 저장하고 "ant test-service -Dtestcase=PersonManager" 태스크를 실행해 보세요. |
At line 230 changed 1 line. |
여기까지 우리가 수정하고 추가한 파일들은 [여기|https://appfuse.dev.java.net/files/documents/1397/7484/appfuse-tutorial-managers-1.6.zip]서 다운 받을 수 있습니다. |
여기까지 우리가 수정하고 추가한 파일들은 [여기|https://appfuse.dev.java.net/files/documents/1397/7484/appfuse-tutorial-managers-1.6.zip]서 다운 받을 수 있습니다. |
At line 232 changed 1 line. |
''Next Up:'' __Part III:__ [Actions 클래스 들과 JSP 작성하기|CreateActions] - Action 클래스들과 JSP 페이지들을 만드는 방법. |
''Next Up:'' __Part III:__ [Actions 클래스 들과 JSP 작성하기|CreateActions_ko] - Action 클래스들과 JSP 페이지들을 만드는 방법. |