MVC PATTERN
MVC Pattern
장점 : 개발자와 디자이너 간의 분업이 가능하며, 유지보수 및 확장
이 쉽다
단점 : 설계가 어려우며 개발 난이도가 높다
Spring MVC Pattern
SSR
Spring MVC Pattern
CSR
Spring MVC Pattern
Controller
사용자의 요청을 처리 한 후, 지정된
View 에 Model 객체를 넘겨준다
Service
사용자의 요청에 따라서 Repository 에서 넘어
온 데이터를 가공하여 Controller 에게 전달한
다
Repository
DB 에 접근하여 데이터를 받아온다
JPA
JPA
JPA
Java Persistence API
Java 진영의 ORM 표준 기술
ORM
Object-Relational Mapping (객체 관계 매핑)
- 객체와 관계형 데이터베이스(RDB)의 중간에서 ORM 이 매핑
entityManager.persist(theIt
em);
INSERT INTO ITEM
VALUES (…)
저장
Item theItem = entityManager.find(Item.class,
itemId);
SELECT I.* FROM ITEM WHERE ITEM_ID
= :itemId
조회
entityManager.remove(the
Item);
DELETE FROM Item
WHERE (…)
삭제
theItem.setItemName(“newItem
Name”);
UPDATE ITEM SET
ITEM_NAME =
‘newItemName’ WHERE
수정
Entity Manager
Entity Manager 를 통해 Persistence Context 에 접근할 수 있다
Persistence Context
영속성 컨텍스트
Entity 를 영구 저장하는 환경
• 비영속 - Transient | New
엔티티 객체 생성 직후의 순수한 객체 상태. 영속
성 컨텍스트, 데이터베이스와는 전혀 관련 없음
• 영속 - Managed
Entity Manager 를 통해 영속성 컨텍스트에 저장.
영속성 컨텍스트의 관리하에 놓인 상태
• 준영속 - Detached
영속성 컨텍스트의 관리하에 있던 엔티티가 관리
상태를 벗어나면 준영속 상태가 된다
영속성 컨텍스트를 초기화해도 엔티티는 준영속
상태가 된다
삭제 – Removed
엔티티를 영속성 컨텍스트와 데이터베이스에서
삭제
Persistence Context
영속성 컨텍스트
영속성 컨텍스트를 사용하면 생기는 이점들
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지 (Dirty Checking)
- 지연 로딩 (Lazy Loading)
Persistence Context
영속성 컨텍스트
영속성 컨텍스트를 사용하면 생기는 이점들
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지 (Dirty Checking)
- 지연 로딩 (Lazy Loading)
Persistence Context
영속성 컨텍스트
영속성 컨텍스트를 사용하면 생기는 이점들
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지 (Dirty Checking)
- 지연 로딩 (Lazy Loading)
Persistence Context
영속성 컨텍스트
영속성 컨텍스트를 사용하면 생기는 이점들
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지 (Dirty Checking)
- 지연 로딩 (Lazy Loading)
Query 문을 DB로 전송하는 시점
Transaction 이 종료되기 전 – transaction.commit();
EntityManager 를 flush 했을 때 – entityManager.flush();
Persistence Context
영속성 컨텍스트
영속성 컨텍스트를 사용하면 생기는 이점들
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지 (Dirty Checking)
- 지연 로딩 (Lazy Loading)
영속성 컨텍스트에서 보관하는 데이터에 변경이 일어났는지 확인
데이터 변경이 일어났다면?
• JPA가 UPDATE 쿼리문 날려줌
• 즉, 값 변경 후 update 쿼리문 날릴 코드가 필요 없음
Persistence Context
영속성 컨텍스트
영속성 컨텍스트를 사용하면 생기는 이점들
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지 (Dirty Checking)
- 지연 로딩 (Lazy Loading)
엔티티를 DB에서 가져올 때 만약 연관 관계를 가진 다른 객체를 가지고 있
다면?
• 즉시 로딩: 엔티티 조회할 때 연관된 객체도 함께 DB에서 조회
• 지연 로딩: 연관된 객체는 조회x, 나중에 필요하면 그 때 DB에서 가
져옴
각 연관 관계마다 즉시 로딩, 지연 로딩 설정 가능

멋쟁이사자처럼_백엔드_멘토_강의자료_MVC 패턴과 영속성 컨텍스트.pptx

  • 1.
  • 2.
    MVC Pattern 장점 :개발자와 디자이너 간의 분업이 가능하며, 유지보수 및 확장 이 쉽다 단점 : 설계가 어려우며 개발 난이도가 높다
  • 3.
  • 4.
  • 5.
    Spring MVC Pattern Controller 사용자의요청을 처리 한 후, 지정된 View 에 Model 객체를 넘겨준다 Service 사용자의 요청에 따라서 Repository 에서 넘어 온 데이터를 가공하여 Controller 에게 전달한 다 Repository DB 에 접근하여 데이터를 받아온다 JPA
  • 6.
  • 7.
    JPA Java Persistence API Java진영의 ORM 표준 기술 ORM Object-Relational Mapping (객체 관계 매핑) - 객체와 관계형 데이터베이스(RDB)의 중간에서 ORM 이 매핑
  • 8.
    entityManager.persist(theIt em); INSERT INTO ITEM VALUES(…) 저장 Item theItem = entityManager.find(Item.class, itemId); SELECT I.* FROM ITEM WHERE ITEM_ID = :itemId 조회 entityManager.remove(the Item); DELETE FROM Item WHERE (…) 삭제 theItem.setItemName(“newItem Name”); UPDATE ITEM SET ITEM_NAME = ‘newItemName’ WHERE 수정
  • 9.
    Entity Manager Entity Manager를 통해 Persistence Context 에 접근할 수 있다
  • 10.
    Persistence Context 영속성 컨텍스트 Entity를 영구 저장하는 환경 • 비영속 - Transient | New 엔티티 객체 생성 직후의 순수한 객체 상태. 영속 성 컨텍스트, 데이터베이스와는 전혀 관련 없음 • 영속 - Managed Entity Manager 를 통해 영속성 컨텍스트에 저장. 영속성 컨텍스트의 관리하에 놓인 상태 • 준영속 - Detached 영속성 컨텍스트의 관리하에 있던 엔티티가 관리 상태를 벗어나면 준영속 상태가 된다 영속성 컨텍스트를 초기화해도 엔티티는 준영속 상태가 된다 삭제 – Removed 엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제
  • 11.
    Persistence Context 영속성 컨텍스트 영속성컨텍스트를 사용하면 생기는 이점들 - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경 감지 (Dirty Checking) - 지연 로딩 (Lazy Loading)
  • 12.
    Persistence Context 영속성 컨텍스트 영속성컨텍스트를 사용하면 생기는 이점들 - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경 감지 (Dirty Checking) - 지연 로딩 (Lazy Loading)
  • 13.
    Persistence Context 영속성 컨텍스트 영속성컨텍스트를 사용하면 생기는 이점들 - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경 감지 (Dirty Checking) - 지연 로딩 (Lazy Loading)
  • 14.
    Persistence Context 영속성 컨텍스트 영속성컨텍스트를 사용하면 생기는 이점들 - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경 감지 (Dirty Checking) - 지연 로딩 (Lazy Loading) Query 문을 DB로 전송하는 시점 Transaction 이 종료되기 전 – transaction.commit(); EntityManager 를 flush 했을 때 – entityManager.flush();
  • 15.
    Persistence Context 영속성 컨텍스트 영속성컨텍스트를 사용하면 생기는 이점들 - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경 감지 (Dirty Checking) - 지연 로딩 (Lazy Loading) 영속성 컨텍스트에서 보관하는 데이터에 변경이 일어났는지 확인 데이터 변경이 일어났다면? • JPA가 UPDATE 쿼리문 날려줌 • 즉, 값 변경 후 update 쿼리문 날릴 코드가 필요 없음
  • 16.
    Persistence Context 영속성 컨텍스트 영속성컨텍스트를 사용하면 생기는 이점들 - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경 감지 (Dirty Checking) - 지연 로딩 (Lazy Loading) 엔티티를 DB에서 가져올 때 만약 연관 관계를 가진 다른 객체를 가지고 있 다면? • 즉시 로딩: 엔티티 조회할 때 연관된 객체도 함께 DB에서 조회 • 지연 로딩: 연관된 객체는 조회x, 나중에 필요하면 그 때 DB에서 가 져옴 각 연관 관계마다 즉시 로딩, 지연 로딩 설정 가능