본문 바로가기

분류 전체보기231

QueryDsl 사용 시 CrossJoin 발생하는 경우와 해결 방법 들어가며 QueryDsl을 사용하던 도중 원치않게 CrossJoin이 발생하는 경우를 발견하여 해당 사항을 정리한다. Cross Join 먼저 CrossJoin이 무엇인지에 대해서 알아본다. CrossJoin은 교차조인이라고 말하여 두 테이블이 있을때 교차조인을 하게 되면 두 테이블의 데이터의 모든 조합을 나타내게 된다. 한쪽에 데이터가 n개이고 다른 한쪽에 데이터가 m개라고 한다면 총 n x m개의 경우의 수가 나타나게 되어 데이터가 많은 테이블이라면 사용할때 주의하지 않으면 성능상 큰 문제를 가져올 수 있다. Cross Join 발생하는 경우 위에서도 설명을 했듯이 교차 조인이 필요하여 사용하는 경우는 상관없지만 원치않는 상황에서 교차조인이 발생하게 되면 성능상 문제가 될 수 있기에 원치 않는 교차 .. 2022. 7. 29.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (4-2) 엔티티 매핑 들어가며 4강은 내용이 많아 1편과 2편으로 나눠 진행하였다. 4-2에 내용은 필드와 컬럼 매핑 시 사용되는 어노테이션에 관한 내용이었다. 크게 어려운 내용은 없었고 다시 한번 해당 어노테이션들의 정의에 대해 알아보는 시간이었다. 4.7 필드와 컬럼 매핑 : 레퍼런스 필드와 컴럼 매핑 : @Column, @Enumerated, @Temporal, @Lob, @Transient, @Access @Column 객체 필드를 테이블 컬럼에 매핑 속성 중에 name, nullable이 주로 사용 insertable 속성은 엔티티 저장 시 이 필드도 같이 저장한다. false 설정 시 읽기 전용 (기본값 true) updatable 속성은 엔티티 수정 시 이 필드도 같이 수정한다. false 설정 시 데이터베이스에.. 2022. 7. 27.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (4-1) 엔티티 매핑 들어가며 4강은 내용이 많아 1편과 2편으로 나눠 진행하였다. 엔티티 매핑 전략에 대한 내용을 정리한다. JPA 대표 매핑 어노테이션 객체와 테이블 매핑 : @Entity, @Table 기본 키 매핑 : @Id 필드와 컬럼 매핑 : @Column 연관관계 매핑 : @ManyToOne, @JoinColumn 4.1 @Entity JPA를 사용를 사용하여 매핑할 클래스는 @Entity 어노테이션 필수 속성 name : JPA에서 사용할 엔티티 이름 설정, 설정하지 않으면 클래스 이름 그대로 사용 주의사항 기본 생성자는 필수 final 클래스, enum, interface, inner 클래스에는 사용 불가 저장할 필드에 final을 사용하면 안된다 4.2 @Table 엔티티와 매핑할 테이블 지정 생략시 매핑한.. 2022. 7. 20.
Spring Data JPA - Pageable을 이용한 Pagenation 처리 방법 들어가며 API를 만들다보면 모든 정보를 한번에 전달하는 것이 아닌 일부분만 전달해줘야하는 경우가 있다. 예를 들어 게시판과 같은 여러 글이 있는 게시글들의 정보를 전달할때이다. Spring-Data-JPA에서는 Pageable이라는 객체를 제공하여 해당 기능을 편리하게 사용할 수 있도록 도와준다. 개념과 사용 방식에 대해서 정리한다. Pagenation ? 게시판의 글을 보여줄 때 모든 글을 한번에 보여주는 것이 아닌 페이지별로 글을 나눠서 쪽수별로 보여준다. 정렬 방식 또한 설정 가능하다. 이처럼 요청한 페이지의 숫자와 총 몇페이지 또는 정렬 방식 등등 요청에 따라 정보를 전달해주는 것이 Pagenation이다. Pageable이란? 이러한 기능을 개발자가 직접 개발을 해서 이용할 수도 있지만 JPA.. 2022. 7. 17.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (3) JPA 시작 들어가며 3강을 정리한다. 해당 글을 정리하면서 엔티티의 상태에 대해 자세히 알 수 있었다. 3.1 엔티티 매니저 팩토리와 엔티티 매니저 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 엔티티매니저팩토리를 하나만 생성 엔티티 매니저 팩토리는 생성 비용이 상당히 큰데에 반해 엔티티 매니저를 생성하는 비용은 거의 들지 않는다. 엔티티 매니저 팰토리는 여러 스레드가 동시에 접근해도 안전하므로 공유해도 도지만 엔티티 매니저는 동시 접근시 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안된다. 엔티티 매니저는 데이터베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 않는다 보통 트랜잭션을 시작할 때 커넥션을 획득한다. 3.2 영속성 컨텍스트란? 영속성 컨텍스트란 ‘엔티티를 영구 저장하는 환경’이라는 뜻 .. 2022. 7. 13.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (2) JPA 시작 들어가며 스터티 두번째 장인 2강. 특이점은 책에서는 xml 파일인 설정값에 대해서 설명이 되어 있지만 현재 회사에서 사용하고 있는 yml 파일에 jpa 부분을 분석하기로 하여 정리하였다. 2장 JPA 관련 yml 파일 설정 ddl-auto -> none / create-drop / create / update / validate naming : physical-strategy: com.vladmihalcea.hibernate.type.util.CamelCaseToSnakeCaseNamingStrategy properties.hibernate.default_batch_fetch_size properties.hibernate.order_inserts, updates 2.6.1 엔티티 매니저 설정 엔티티 .. 2022. 7. 10.