본문 바로가기

JPA7

JPA 조인&서브쿼리 조인 JPA에서 조인은 SQL 조인과 개념이 유사하며, 여러 테이블의 데이터를 결합하여 정보를 조회하는 방법입니다. 크게 내부 조인(Inner Join), 외부 조인(Inner Join), 세타 조인(Theta Join)을 사용할 수 있습니다. 이들 각각에 대해서 Member, Team 엔티티 기준으로 작성하겠습니다. @Entity @Getter public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; @ManyToOne @JoinColumn(name = "team_id") private Team team; } @Entity @Getter publi.. 2024. 3. 12.
Spring Data JPA Spring Data JPA는 Java Persistence API(JPA) 위에 구축된 Spring Data의 일부로, 데이터 접근 계층보다 쉽고 효율적으로 구현할 수 있도록 도와주는 모듈입니다. Spring Data JPA는 JPA 기능을 확장하고, 더 쉬운 데이터 접근 방법을 제공하여 어플리케이션 개발의 생산성을 크게 향상시킵니다. Spring Data JPA 주요 기능 레포지토리 추상화 : Spring Data JPA는 Repository 인터페이스에 대한 구현체를 자등으로 생성하여 주입합니다. 개발자는 인터페이스만 정의하고, 이를 통해 CRUD 작업과 페이징 처리를 쉽게 구현할 수 있습니다. 쿼리 메소드 : 메소드 이름만으로 쿼리를 생성하는 기능을 제공합니다. 메소드 이름을 분석하여 자동으로 S.. 2024. 3. 8.
JPA 조회 전략 JPA를 활용한 쿼리 방식 선택은 성능 최적화와 개발 효율성을 고려하여 결정되어야 합니다. 아래는 JPA 쿼리 방식 선택 시 권장하는 순서 입니다. 먼저 예시를 위해 Member, Team 엔티티를 만들겠습니다. @Entity @Getter @NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) @ToString(of = {"id", "name"}) public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "team_id") private Long id; private String name; @OneToMany(mappedBy = "team") priv.. 2024. 3. 7.
JPA Entity 설계시 베스트 프랙티스 1. 엔티티는 가급적 Setter을 사용하지 말자 불변성 유지 : 엔티티의 상태를 변경할 수 있는 setter 메소드가 많으면 엔티티의 상태가 예측하기 어려워지고, 불변성을 유지하기 어려워집지다. 불변성이 유지되면, 버그 발생 가능성이 줄어들고 코드를 이해하기 쉬워집니다. 엔티티의 일관성 보장 : 생성 시점에 필요한 모든 값을 생성자를 통해 전달 받으면, 객체가 일관된 상태로 시작할 수 있습니다. 이는 엔티티가 항상 유효한 상태로 유지되도록 돕습니다. 변경 추적 용이 : JPA 변경 감지 기능 (Dirty Checking)은 트랜잭션 내에서 엔티티의 상태 변화를 감지하여 변경 사항을 데이터베이스에 자동으로 반영합니다. setter 대신 명확한 의도를 나타내는 메소드 (예:changeUsername, in.. 2024. 2. 22.