Spring 27

URI와 웹 브라우저 요청 흐름

URI 웹 브라우저 요청 흐름 실제 웹 브라우저 _요청하면 HTTP와 관련해 이야기 해본다. URI(Uniform Resource Interface) URI? URL? URN? "URI는 로케이터(locator), 이름(name) 또는 둘다 추가로 분류될 수 있다." URI 자원자체를 식별하는 방법 ex) URL : A의 사는 곳, URN : A URI 단어 뜻 Uniform : 리소스 식별하는 통일된 방식 Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음) Identifier : 다른 항목과 구분하는데 필요한 정보 사람을 식별할 때 주민등록번호로 식별한다면 Identifier는 주민등록번호 URL, URN 단어 뜻 URL - Locator : 리소스가 있는 위치를 지정 URN - ..

Spring/HTTP 2023.02.12

HTTP 강의 소개와 인터넷 프로토콜에 대해서

HTTP를 모르는 상태에서 웹 기술들을 파악이 어렵다. 개발자는 평생 HTTP 기반위에서 개발해야함. 언젠가 한번은 HTTP 정리해야 함. 강의 목표 HTTP의 전체 흐름 이해 실무에 꼭 필요한 핵심 내용 수 많은 예시와 그림으로 쉽게 설명 강의 대상 - HTTP 기술을 사용하는 모든 개발자 모바일 앱 웹 프론트엔드 백엔드 강의 소개와 순서 인터넷 네트워크 URI와 웹 브라우저 요청 흐름 HTTP 기본 HTTP 메소드 HTTP 메소드 활용 HTTP 상태코드 HTTP 헤더 HTTP 캐시 인터넷 통신 인터넷에서 컴퓨터 둘은 어떻게 통신할까? 메세지를 전달해야할 서버 컴퓨터가 먼 거리에 있다면, 수많은 중간 노드들을 거쳐서 서버로 넘어가야 한다. IP(인터넷 프로토콜) 복잡한 인터넷 망에서 메세지를 먼 거리의..

Spring/HTTP 2023.02.11

프록시와 연관관계 관리 - 영속성 전이(CASCADE)와 고아 객체

영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 예 : 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장 Parent.java @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) private List childList = new ArrayList(); cascade는 컬렉션에 포함되어 있는 모든 엔티티에 대하여 함께 영속화를 해주겠다는 의미이다. 영속성 전이 : CASCADE - 주의! 영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없음 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함을 제공할 뿐 CASCADE의 종류 ALL : 모두 적용 PERSIST : 영속 R..

Spring/JPA 2023.02.10

프록시와 연관관계 관리 - 즉시 로딩과 지연 로딩

Member를 조회할 때 Team도 함께 조회해야 할까? 단순히 member 정보만 사용하는 비지니스 로직이라면 Team을 JOIN해서 조회하는 것은 손해다. 그래서 JPA는 지연로딩이라는 기능을 제공한다. @ManyToOne(fetch = FetchType.LAZY) @JoinColumn private Team team; 이렇게 @ManyToOne에 fetch = FetchType.LAZY를 추가하면 프록시 객체로 가져옵니다. println(member.getName()); 지연 로딩 LAZY을 사용해서 프록시로 조회 Member와 Team을 자주 함께 사용한다면 즉시 로딩 EAGER를 사용해서 함께 조회 @Entity public class Member { @Id @GeneratedValue priv..

Spring/JPA 2023.02.10

프록시와 연관관계 관리 - 프록시

목차 프록시 즉시 로딩과 지연 로딩 지연 로딩 활용 영속성 전이 : CASCADE 고아 객체 영속성 전이 + 고아 객체, 생명주기 실전 예제 - 5. 연관관계 관리 프록시 Member를 조회할 때 Team을 함께 조회해야 할까? 1) Member와 Member가 속한 Team을 출력하는 로직에서는 Member를 persist할 경우 Team과 함께 db query를 보내는 것이 좋다. 2) Member만 출력하는 로직은 Member를 persist할 경우 Team과 함께 db query를 보내는 것은 손해다. JPA는 지연 로딩과 프록시를 통해 이 문제점을 해결한다. 이 해결 방식을 이해하기 위해서는 프록시를 명확하게 알고 있어야 한다. 프록시 기초 JPA에서는 em.getReference()라는 흥미로..

Spring/JPA 2023.02.09

고급 매핑 - Mapped Superclass - 매핑 정보 상속

@MappedSuperclass 모든 객체에 공통된 속성을 추가해야 한다고 했을 경우 공통된 속성을 상속으로 받아서 사용할 수 있도록 만들어 준다. 상속관계 매핑과 다르다. 상속관계 매핑은 공통된 속성을 부모 객체에 포함시키는 것이다. 코드 공통된 속성을 넣는 엔티티 생성 package hellojpa; import javax.persistence.MappedSuperclass; import java.time.LocalDateTime; @MappedSuperclass public class BaseEntity { private String createBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDate..

Spring/JPA 2023.02.09

고급 매핑 - 상속관계 매핑

목차 상속관계 매핑 객체의 상속관계를 테이블에 어떻게 매핑하는지 알아본다. @MappedSuperclass 속성만 상속하는 것이다. 실전 예제 - 4. 상속관계 매핑 이러한 상속관계 매핑을 어떻게 사용하는지 알아본다. 상속관계 매핑 관계형 데이터베이스는 상속 관계 X 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법DB입장에서 3가지 방법으로 구현할 수 있다. 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 조인 전략 데이터를 가져올 때 JOIN으로 가져오는 것, 총 2번의 ..

Spring/JPA 2023.02.08