JPA
-
jpa(hibernate) OneToMany 연결의 기본값이 JoinTable 인 이유는?AI 와의 대화 2025. 3. 26. 16:20
jpa 에서 두 테이블간 1:M 연관관계를 정의할때, 연결정보를 저장하는 방법이 2가지가 있습니다.JoinColumn: 자식 테이블에 외래키(FK)를 두는 방식. (@JoinColumn 사용)JoinTable: 별도의 중간 테이블을 만들고 거기에 외래키(FK)를 두는 방식. (@JoinTable 사용)일반적으로 자식 테이블에 외래키를 두는 JoinColumn 방식을 많이 사용합니다. 그런데 jpa 에서는 기본값이 JoinTable 방식으로 지정되어 있습니다.jpa 1:M 연관관계를 관련 설정법을 웹 검색해보면, 거의 대부분, 기본값인 JoinTable 방식의 문제점을 지적하면서 JoinColumn 방식으로 변경하는 방법을 알려줍니다.저는 여기서 의문이 생겼습니다. 일반적으로 알고 있는 것도 JoinCol..
-
java bean mapper와 DTO 소개Back-end 2018. 3. 19. 20:22
Overviewspring, jpa 기반으로 개발할때 도움이 될 수 있는 java bean mapper 라이브러리를 소개합니다. 아래와 같은 간단한 JPA Entity 객체를 가지고 설명합니다. Http 기반의 api 를 개발할때 필요에 따라 JPA Entity 를 바로 api 의 응답으로 내보내는 경우가 있습니다. 아래는 샘플 코드입니다. 그러면 다음 그림과 비슷한 결과를 응답하게 됩니다. 이럴 경우에 발생하는 순환 참조 문제같은 몇가지는 jackson json 라이브러리가 해결해주기도하지만 일반적으로 아주 작은 프로젝트가 아니라면 추천할만한 방식이 아닙니다. JPA Entity 도메인 데이터와 api 응답 데이터간에 생명주기가 틀리기 때문입니다. 데이터 생명주기프로젝트의 초기에는 요구사항에 잘 맞춰서..
-
spring-data-jpa + querydsl 로 개발하기 - 2Back-end 2016. 7. 28. 20:00
spring-data-jpa + querydsl 로 개발하기 - 1 에서 이어지는 글입니다. 3단계 - 네임드 쿼리@Query, @NamedQuery 어노테이션 다른 테이블과의 조인이 필요하거나 where 절이 꽤 복잡한 쿼리라면 method 이름만 가지고 모두 표현하기에는 무리가 있다.3단계는 복잡한 쿼리를 만드는 가장 쉬운 방법으로 저장소 인터페이스에 method를 생성하고 선언부에 @Query 어노테이션을 사용하는 방법이다. @Query 어노테이션을 사용하는 method의 이름은 2단계 쿼리 메서드규칙의 영향을 받지 않으므로 원하는데로 지으면 된다. 여기서 작성되는 쿼리는 JPQL 로 JPA의 쿼리 문법이다. 옵션을 통해 native SQL로 작성도 가능하다. 이 단계도 쿼리가 잘못 작성되었을 경우..
-
spring-data-jpa + querydsl 로 개발하기 - 1Back-end 2016. 6. 8. 00:31
소프트웨어 개발이라는것은 퍼즐 맞추기나 블럭쌓기 보다는 회화 그리기나 조각하기에 더 가깝다고 할 수 있다. 안개가 겉히듯 서서히 선명해지는 것이 소프트웨어 개발의 특성이라고 본다. spring에서 개발되는 제품들은 소프트웨어 개발의 이런 특성을 잘 고려하여 설계가 되어 있다. spring을 이용하여 프로그램을 개발할때 이런 점진적, 반복적 개발이 가능하도록 지원하고 있다. 제로 컨피규레이션이라고 하여 모든 상황에 대해서 미리 지정된 기본동작으로 작동하며, 개발자자 추가설정을 해나가면서 개별 프로젝트가 원하는 요구사항에 맞춰가게 되는 방식이다. 비교적 최근에 추가된 spring-boot를 통해 빠른 개발이 완성되어가는 모습이다. 사용하는 기술 간단 소개 JPA (java persistence api)per..