본문 바로가기
728x90

JPA4

초보자도 이해할 수 있는 JPA, Hibernate, Spring Data JPA의 차이점 JPA란? 자바 어플리케이션에서 RDB(관계형 데이터베이스를) 어떻게 사용하는지에 대한 가이드라인! 무슨 특정 기능을 하는 친구가 아니라 말그대로 구현이 안 되어 있는 인터페이스만 있는 상태! ex) 가솔린 자동차 설계도 JPA를 왜 쓰는 거에요? 객체 지향적 코딩과 관계형 데이터베이스의 패러다임을 맞춰 주기 위해 사용. 객체 지향적 코딩을 우선시 하면, 데이터베이스를 다루기 위한 sql문으로의 전환이 쉽지 않다. 그렇다고 객체 지향적 코딩을 포기하면 유지 보수의 어려움 등의 단점이 있기에 딜레마에 빠진다. 이를 해결하기위해 ORM 기술이 탄생. JPA를 사용하면 내부에서 JDBC를 통해 데이터베이스와의 매핑을 도와줌 Hibernate란? JPA가 인터페이스라면, Hibernate는 그 인터페이스를 응용.. 2023. 8. 30.
[JPA] 연관 관계 핵심 정리해보기 - 연관 관계의 주인, 양방향, 단방향 JPA에서 연관관계란 단방향 매핑과 양방향 매핑으로 이루어져 있다. 단방향 매핑이란 테이블이 A, B 2개가 있다고 가정했을 때 말그대로 A -> B로만 조회가 가능하다라는 개념이고 양방향 매핑이란 A->B가 가능하고 반대로 B->A 또한 가능한 개념이다. 양방향 매핑을 지양하라는 말이 들리던데 왜 그런건가요? ERD의 중심에 있는 Member라는 테이블이 있다고 가정해보자. Member와 주변 여러 테이블 (예시로 7개)과 매핑이 되어있다고 가정해볼 때 양방향으로 매핑을 해버리면 mapped by에 맞는 변수를 세팅해야하기 때문에 지양해야한다. 말그대로 코드가 복잡하기 때문인 것. 연관 관계의 주인이 무엇인가요? 연관 관계의 주인이란 외래키를 가지고 있는 테이블이라고 생각하자. (many to one .. 2023. 2. 19.
[JPA] @ManyToMany, 다대다 관계 다루는 법 프로젝트 ERD 자료 여기서 facility와 real_estate, 그리고 그 사이에 있는 테이블인 real_estate_facility를 주목해보자 원래는 facility와 real_estate는 다대다 관계이다. 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없기에. 1 대 多 관계 2개로 치환해주는 방식을 채택하였다. 중간에 real_estate_facility 테이블을 만들어 1대 多 관계 2개를 통해 해결한 모습이다. 다음과 같이 연관관계의 주인인 RealEstateFacility에서 ManyToOne 관계를 주입하여 해결이 가능하다. 2023. 2. 19.
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY)의 차이점? 팀프로젝트 ERD 캡쳐본이다. 여기서 real_estate와 member 사이의 관계를 주목해보자. 둘 사이의 관계는 N:1 관계이다. 다음은 real_estate의 코드이다. Real_estate와 member 사이의 관계는 N:1이기 때문에 Real_estate 입장에선 @ManytoOne 관계가 맞다. 그리고 추가적으로 입력하는 fetch = FetchType.LAZY 라는 정보는 어떤 의미일까? LAZY 속성을 사용하게 되면 EntityManager에 있는 member 값을 조회하려 할 때 오직 member만 조회된다. 그렇다면 EAGER 속성을 사용하면 어떻게 될까? EntityManager에 있는 member을 조회하려 할 때 member와 연관 관계가 있는 테이블이 모두 조회가 된다. 즉, .. 2023. 2. 19.
728x90