JPA
-
[Spring JPA] @OneToOne 에서 @MapsId 를 이용해 컬럼갯수를 줄여보자!Back End/Spring Data JPA 2022. 1. 26. 15:11
JPA에서는 연관관계를 맺으면 연관관계를 맺은 두 테이블 중 하나에 FK필드를 디폴트로 생성하게 된다. @MapsId를 이용해 디폴트로 생성 될 컬럼을 줄이고, 그 값을 PK에 주입할 수 있다. (그리고 두 테이블은 FK로 연결되어 있지 않다.) # 엔티티 구조 # 테스트 코드 및 결과 mainEngine의 id=1 은 Car의 PK값인 1을 주입 받은 것이다. (보기좋게 Car의 Id를 직접세팅해줄 걸 그랬다.) select쿼리를 보면 join 이 없다. 이를 통해 mainEngine의 id는 foriegnKey 설정이 안되있음을 짐작할 수 있다. (JPA는 FK로 연결된 객체는 join문으로 가져온다.) # DDL-auto 로 생성된 테이블 구조 Hibernate: create table car ( ..
-
[Spring JPA] JPA의 사실과 오해 (feat. NHN Cloud)Back End/Spring Data JPA 2021. 12. 23. 14:34
JPA 를 쓰면 쓸수록, 너무 불편한게 많다. 검색으로 원하는 고급정보를 찾기도 어렵다. (정보가 다들 카더라 통신을 통해 대량으로 재생산 되고 있어 깊이가 없을 뿐더러 정확한 검색을 막고 있다.) (깊이 있는 정보는 어딘가에 묻혀있겠지 😢) 그리하여 알짜정보를 찾기 위해 검색의 무한루프에 빠져있던 중 카더라 통신에서 잘 보지 못한 새로운 정보를 알게되어 정리해두고자 한다. (중복된 정보 또한 다시 복습할 겸 정리한다.) * 해당 정보는 NHN Cloud 유튜브채널에서 획득하였습니다. (모든 저작권은 NHN에 있습니다.) 해당 포스팅과는 관련이 없지만 NHN에 관한 포스팅이 너무 재밌어서 공유해봅니다. 헤헿.. 형님과 아우의 대결, NHN VS 네이버!!! | 캐치 뉴스로 확인하는 생생한 취업트렌드 ww..
-
[Spring JPA] JPA, Hibernate, Spring Data, ORM 의 개념Back End/Spring Data JPA 2021. 10. 19. 12:49
# ORM(Object Relational Mapping) Application의 객체(클래스)를 DB의 테이블로 Mapping 한다는 개념 클래스와 DB의 테이블은 기존부터 호환가능성을 염두해두고 만들어진 것이 아니기 때문에 불일치 발생이 당연 이러한 불일치를 해결하며 객체와 테이블의 관계를 바탕으로 SQL 문장을 자동으로 생성하여 객체로 DB를 조작하게 해주는 것이 ORM # JPA(Java Persistence API) JAVA진영의 표준 ORM 인터페이스, 구체 클래스는 거의 없음. # Hiberante JPA를 implements 해 구현한 class 라이브러리 DataNucleus, EclipseLink 등 JPA를 구현한 다른 라이브러리도 있다. # Spring Data JPA JPA를 한 ..