전체 글

전체 글

    [Spring Data JPA] FetchType - 즉시 로딩(EAGER)과 지연 로딩(LAZY)

    [Spring Data JPA] FetchType - 즉시 로딩(EAGER)과 지연 로딩(LAZY)

    즉시 로딩 : @ManyToOne(fetch = FetchType.EAGER) 지연 로딩 : @ManyToOne(fetch = FetchType.LAZY) JPA JOIN에는 두 가지 로딩 방법이 존재합니다. 연관관계를 가지는 객체를 조회할 때 즉시 로딩할지, 필요할 때 로딩할지에 따라 즉시로딩(EAGER), 지연로딩(LAZY)를 선택할 수 있습니다. 이전 JPA 연관관계 매핑 포스팅에서 사용한 예제 코드로 fetch를 설명하겠습니다. 시나리오 1. 테이블은 회원(Member)와 팀(Team)이 있습니다. 2. 회원(N) : 팀(1) 관계로 다대일 다중성을 가지고 있습니다. 즉시 로딩(FetchType.EAGER) @Entity public class Team { @Id @GeneratedValue pr..

    [Spring Data JPA] 양방향 순환참조 문제 및 해결방법

    [Spring Data JPA] 양방향 순환참조 문제 및 해결방법

    양방향 순환참조 문제 양방향 연관관계를 가진 두 객체가 서로를 참조하고 있어 무한히 서로의 정보를 조회하는 문제 Spring Boot에서 Rest API를 구현할 때 @ResponseBody 어노테이션을 사용하고, 응답 값으로 양방향 연관관계를 가진 객체를 반환하는 과정(JSON 형태로 변환)에서 순환 참조가 계속 발생해 stackoverflow가 발생하는 큰 문제점이 발생하였습니다. 아래는 예제 코드입니다. @Entity public class Team { @Id @GeneratedValue private Long id; private String name; // 양방향 @OneToMany(mappedBy="team") List members; } @Entity public class Member { ..

    [Spring Data JPA] JPA 연관관계 매핑(JOIN)

    [Spring Data JPA] JPA 연관관계 매핑(JOIN)

    연관관계 매핑이 필요한 이유 팀(Team)과 회원(Member)가 일대다의 관계를 가지는 연관관계일 때 예시 코드 팀과 회원의 객체 클래스 코드 @Entity public class Team { @Id @GeneratedValue private Long id; private String name; } @Entity public class Member { @Id @GeneratedValue private Long id; private String name; @Column(name = "team_id") private Long teamId; } 팀과 회원을 조회하는 코드 // 1번 ID를 가지는 회원 찾기 Member member = em.findById(1); // 회원의 TeamId로 팀 찾기 Long ..

    [Spring Data JPA] JPA 주요 어노테이션(Annotation)

    [Spring Data JPA] JPA 주요 어노테이션(Annotation)

    JPA에는 어노테이션을 통해 여러가지 설정을 할 수 있다. 어떤 어노테이션들이 있는지 정리해보자. Entity 관련 @Entity @Table(name = "member") public class Member { @Id @GeneratedValue(startegy=GenerationType.IDENTITY) private Integer id; @Column(name="member_name") private String memberName; @Enumerated(value=EnumType.STRING) private RoleType role; @Column(name="created_time") @Temporal(value=TemporalType.TIMESTAMP) private LocalDateTime c..

    [Spring Data JPA] JPA란? JPA기본 예제

    [Spring Data JPA] JPA란? JPA기본 예제

    JPA란? JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준 JPA가 제공하는 API를 사용하며, 개발자가 SQL를 작성하지 않아도 된다. JPA가 개발자 대신 적절한 SQL를 생성해준다. (JPQL) 객체(Entity)를 관계형 DB와 자동으로 Mapping 해준다. (ORN) ORM Object-Relational Mapping의 줄임말. 객체와 관계형 DB를 매핑한다는 뜻. ORM 프레임워크를 사용하면 객체와 DB와의 매핑을 통해 적절한 SQL를 생성하여 DB에 객체를 저장해준다. 의존성 추가 maven repository 주소 : https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starte..