Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료

1,351 views

Published on

2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료

Published in: Technology
  • Be the first to comment

2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료

  1. 1. POJO(Plain Old Java Object)POJO(Plain Old Java Object)PROGRAMMINGPROGRAMMING최범균 , madvirus@madvirus.net( 다음커뮤니케이션 CTO 본부 기술전략팀 , JavaCan)
  2. 2. 2목차 지금까지의 개발 POJO 프로그래밍의 고민거리 솔루션의 선택 POJO 구현 레퍼런스
  3. 3. 3웹 개발자의 발전pure JSP MVCBean DAO?framework,api, module,…
  4. 4. 4DAO 기반 아키텍처View(JSP, Velocity)Manager(Session Bean)DAO(Entity Bean)Java Bean(DTO)DBController(Action)
  5. 5. 5객체 지향은 어디에 ?ManagerServiceDAOJava Bean (DTO)function functionstructJava C패턴만 있고 , 객체 지향은 없다 !
  6. 6. 6꿈 꾸던 클래스 설계
  7. 7. 7고민과 좌절하나의 클래스와 하나와 테이블은매핑할 수 있겠는걸 ..Order 와 연관된 Address 객체를ORDER 테이블에 넣어야 하나 ?쿼리를 두번 날려 ?상속은 어떻게 구현하지?Order 를 로딩할 때 ,OrderItem 도함께 로딩할까 ? 매번하면성능이 나빠질텐데 ,,,,,트랜잭션의 처리는?어려워ㅜㅜ
  8. 8. 8멋진 솔루션의 발견iBATISJDOHibernateSpringJava Persistence APIObJect Relational BridgeJOTMJBoss TransactionPicoehcache
  9. 9. 9POJO 의 반격POJO 진영의 반격Procedural힘내라나ORMLightweightContainerOpen Source
  10. 10. 10솔루션의 선택ORM: HibernateContainer: Spring“JPA 는 향후 고려 예정„• POJO 기반• Hibernate/JPA 연동• 선언적 트랜잭션 지원• JTA 지원• 다양한 제품과 연동 용이• 풍부한 객체 지향 개념 지원• POJO 기반• HQL, Criteria, Native SQL• JTA 를 통한 트랜잭션 관리 가능• 다양한 방법으로 성능 향상 가능
  11. 11. 11POJO 기반 구현 도메인 모델의 구성 요소 아키텍처 Entity 의 구현 ORM 처리 구성 요소의 조립 Repository 의 구현 선언적 트랜잭션 동시성 제어 JTA 연동 성능
  12. 12. 12도메인 모델의 구성 요소 Entity 고유의 identity 를 갖는 객체 DB 테이블과 매핑되는 객체 비즈니스 로직을 포함 Value Object 값을 표현하는 객체로서 고유의 identity 를 갖지 않는다 . Entity 에 포함되는 value object 와 뷰 영역을 위한 value object 로 구분 가능 . Repository entity 를 검색하고 삭제하기 위한 메소드를 정의한다 . persistence 레이어를 캡슐화한다 . Service 어플리케이션의 흐름을 구현한다 . 여러 객체를 사용하여 구현되는 기능을 제공한다 . 서비스는 하나의 entity 로 구현할 수 없는 기능을 포함한다 . Use Case 와 연관된다 . Factory 객체 그래프에 맞게 객체들을 조립하여 생성 Façade Presentation 영역과 도메인 영역을 연결
  13. 13. 13아키텍처Business Tier
  14. 14. 14Entity 의 구현 객체 지향 모델링상속객체간연관모델의 재사용세밀한 설계로직의 추가
  15. 15. 15ORM 처리 설정 파일을 사용하여 Entity 와 테이블 매핑 Hibernate: Value Object, 상속 , 1-n·n-1·m-n·1-1 연관 지원Object RelationalMapping
  16. 16. 16구성 요소의 조립 Spring 의 DI 를 이용하여 구성 요소 조립
  17. 17. 17Repository 의 구현 Hibernate 를 이용한 Repository 의 구현 Spring 의 HibernateDaoSupport 이용
  18. 18. 18선언적 트랜잭션 Façade 의 메소드에 트랜잭션 적용 Spring 의 AOP 를 이용하여 선언적 트랜잭션 구현 Façade, Service, Repository 는 트랜잭션 처리로부터 해방
  19. 19. 19Hibernate 의 동시성 제어 Optimistic Locking version 기반 Optimistic Locking 지원 Pessimistic Locking 행 단위의 락킹 지원 Offline Optimistic Locking Hibernate 의 detached object 를 사용하여 구현
  20. 20. 20JTA 연동 JTA 를 이용한 트랜잭션 처리 JOTM 과 같은 오픈 소스 JTA 구현체 사용 J2EE 콘테이너가 제공하는 JTA 연동 가능 JTA 를 통한 DB 커넥션과 다양한 자원의 트랜잭션 처리 가능
  21. 21. 21Hibernate 와 성능 (1) Lazy Loading 연관된 객체를 필요한 순간에 로딩 불필요한 select 쿼리 및 join 을 수행하지 않음 Eagarly loading: 객체를 로딩한 후 연관된 객체를 함께 로딩 Join Fetch inner join, outer join 등을 이용하여 연관된 객체를하나의 SELECT 쿼리로 로딩 Lazy Loading vs Join Fetch 기본 : Lazy Loading 을 사용하여 필요한 쿼리만 수행하는 것이 유리 적은 수의 객체 : join 을 사용하여 연관된 객체를 함께 로딩함으로써수행되는 쿼리의 개수를 줄임
  22. 22. 22Hibernate 성능 (2) 2 차 캐시 어플리케이션 단위의 캐시 : 모든 Session 이 캐시 공유 분산 캐시 지원 : 클러스터 단위로 캐시 공유 Lazy Loading 을 사용할 경우 2 차 캐시가 유리 쿼리 캐시 HQL, Criteria 등 검색 결과를 캐시에 저장 캐시와 성능 DBMS 에 대한 접근을 최소화 함으로써 조회 성능 ( 속도 ) 을 대폭향상 게시판 , 블로그처럼 최근 데이터가 자주 사용되는 어플리케이션에서특히 높은 효과를 볼 수 있음
  23. 23. 23성능에 대하여 최고의 성능 vs. 적절한 최상의 성능 최고의 성능 : Java < C < 어셈블리 < 기계어 최고의 성능 : ORM < 단순 매핑 < pure JDBC 최고 보다는 적절한 최상의 성능을 추구 95% 의 ORM POJO 에서는 무조건 100% ORM 이라는 생각은 위험함 일부 고성능이 필요한 곳에서는 pure JDBC 나 캐시 기법 등 적용 POJO 의 보상 1: 생산성 향상 SQL 및 자원 관리와 관련된 코드를 없앰으로써 생산성 ( 대폭 )향상 빠른 개발과 일부 코드에 대한 튜닝 POJO 의 보상 2: 유지보수성 향상 전체적인 코드 라인수가 감소 비즈니스 로직에 초점이 맞춰진 코드
  24. 24. 24참고자료 POJO POJO 의 유래 : http://www.martinfowler.com/bliki/POJO.html POJO in Action, Chris Richardson, Manning Hibernate http://www.hibernate.org Java Persistence with Hibernate, Christian Bauer 외 , Manning Hibernate 3 프로그래밍 , 최범균 , 가메출판사 (3 월 ) Spring http://www.springframework.org 스프링 인 액션 , Craig Walls 외 , 에어콘출판사 [Manning] 오픈소스 JTA 구현체 JOTM(Java Open Transaction Manager) : http://jotm.objectweb.org/ 객체 지향 및 패턴 관련 OOAD: http://www.ooad.org Domain Driven Design, Eric Evans, Addison-Wesley Professional 강의 예제 코드 http://cafe.daum.net/jco8pojo
  25. 25. 25맺음말인내는 쓰지만 ,그 열매는 달다
  26. 26. 감사합니다 !Q & A

×