분류 전체보기33 JPA에서의 엔티티 참조 조회 방식 JPA(Java Persistence API)에서 엔티티 간 관계를 맺고 있을 때, 참조값을 객체로 가지고 있는 엔티티를 조회하는 방식에 대해 설명합니다. 이는 데이터베이스 조회 성능과 애플리케이션의 동작에 중요한 영향을 미칩니다.1. 즉시 로딩 (Eager Loading)정의: 엔티티를 조회할 때 연관된 엔티티도 함께 조회합니다.기본 적용: @ManyToOne, @OneToOne 관계장점: 연관 엔티티를 즉시 사용할 수 있습니다.단점: 불필요한 조인으로 인한 성능 저하가 발생할 수 있습니다.2. 지연 로딩 (Lazy Loading)정의: 연관된 엔티티를 실제로 사용할 때 조회합니다.기본 적용: @OneToMany, @ManyToMany 관계장점: 필요한 시점에 데이터를 로드하여 초기 조회 성능을 개선할.. 2024. 7. 24. exception just for purpose of providing stack trace 오류 JPA를 통해 DELETE 로직을 실행 중에 발생했다. 이 오류의 원인은 여러가지이다. 데이터 존재 여부:실제로 해당 ID의 데이터가 데이터베이스에 존재하는지 확인.테스트 환경과 운영 환경의 데이터베이스가 다를 수 있음.트랜잭션 관리:삭제 작업 전에 조회가 제대로 이루어지고 있는지 확인.트랜잭션 격리 수준이 적절한지 확인.JPA 캐시:JPA 1차 캐시나 2차 캐시로 인해 최신 데이터를 반영하지 못할 수 있음.ID 타입 불일치:전달받은 ID의 타입과 엔티티의 ID 타입이 일치하는지 확인.레포지토리 메소드:사용 중인 레포지토리 메소드가 적절한지 확인. (예: findById vs getOne).엔티티 매핑:엔티티와 테이블 매핑이 올바른지 확인. 이 중 4번 문제가 원인이었던 것! 진행하던 업무는FK로 참조.. 2024. 7. 23. Builder 패턴 1. Builder 패턴Builder 패턴은 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴입니다.1.1 수동 구현 예시public class User { private final String name; private final int age; private final String email; private User(UserBuilder builder) { this.name = builder.name; this.age = builder.age; this.email = builder.email; } public static class UserBuilder { private Strin.. 2024. 7. 22. Q DTO querydsl의 q dto는 @queryInjection 으로 연결되어 있는 dto가 변경되었을 때 직접 변경하는 것이 아니라 빌드시 변경이 된다.DTO 클래스 수정기존의 UserDTO 클래스에 LocalTime 타입의 sendTime 필드를 추가하고, 빌더 패턴을 적용import com.querydsl.core.annotations.QueryProjection;import java.time.LocalTime;public class UserDTO { private Long id; private String username; private String email; private LocalTime sendTime;// 새로운 필드 @QueryProjection public .. 2024. 7. 21. Entity, Repository, DTO, domain, service의 연관성과 개념 Entity데이터베이스 테이블과 직접 매핑되는 객체JPA 어노테이션을 사용하여 정의데이터의 영속성을 담당Repository:Entity에 대한 데이터 접근을 추상화CRUD 연산과 기본적인 쿼리 메소드를 제공데이터베이스와의 직접적인 상호작용을 담당Domain:비즈니스 로직을 포함하는 객체들의 집합Entity를 포함할 수 있으며, 추가적인 비즈니스 객체들도 포함핵심 비즈니스 규칙과 로직을 구현DTO (Data Transfer Object):계층 간 데이터 전송을 위한 객체주로 클라이언트와 서버 간의 데이터 교환에 사용Entity의 일부 데이터만 포함하거나, 여러 Entity의 데이터를 조합 가능Service:비즈니스 로직을 구현하는 계층Repository를 통해 데이터를 조회하고 조작Domain 객체들을 사.. 2024. 7. 20. Git Flow 최초 master 브랜치와 develope 브랜치가 생성되고, develope 브랜치는 master 브랜치로부터 생성됨.기능 개발을 할 때 jira로 티켓을 발급하고, 발급받은 업무를 feature 브랜치를 생성하여 그 위에서 개발한다.→ 최초 개발 시점이 아니라면, 코드리뷰나 사소한 기능으로 인해 여러 커밋들로 나눠져있다면 squash를 진행하고, 티켓을 발급받아 개발을 시작할 때 기능이 달라지지 않았다면, 해당 기능의 작업 브랜치를 rebase 해서 진행할 수 있도록 한다. 너무 복잡하지 않게 기능별 하나의 feature를 유지할 수 있다.개발이 완료되면, 서비스 테스트를 위해 release 브랜치를 생성하여 테스트를 진행한다.이후 문제가 없다면 이전 버전의 develope 브랜치에도 머지하고, 해당.. 2024. 7. 19. 이전 1 2 3 4 5 6 다음