본문 바로가기
반응형
SMALL

개인 공부/JPA9

Fetch Join시 생기는 문제 JPA의 fetch join을 사용할 때 발생할 수 있는 몇가지 일반적인 문제에 대해서 1. 데이터 부하: Fetch Join은 관련 엔티티를 함께 가져오므로 데이터베이스에서 불필요한 데이터를 로드할 수 있습니다 특히 엔티티 간에 많은 관계가 있는 경우 이 문제가 발생할 수 있습니다. 불필요한 데이터를 가져오는 것은 성능에 부정적인 영향을 줄 수 있습니다. 예시) 주문(Order)과 주문상세(OrderDetail) 엔티티가 있습니다. 주문을 가져올 때 fetch join을 사용하여 주문 상세 정보를 함께 가져올 수 있습니다. 하지만 만약 주문에 연결된 주문 상세가 많고, 이를 모두 함께 로드하면 데이터베이스에서 불필요한 데이터를 가져오게 됩니다.  @Entitypublic class Order { .. 2024. 4. 28.
JPA N+1 문제 1. JPA n+1 문제는 무엇? ->JPA의 N+1 문제는 데이터를 검색할 때 발생하는 성능 문제 중 하나입니다. 이 문제는 일반적으로 다음과 같은 상황에서 발생합니다. 1. 부모 엔티티를 검색합니다. 2.각 부모 엔티티에 대해 연결된 자식 엔티티를 검색합니다. 만약 자식 엔티티들이 많은 경우, 각 부모 엔티티에 대해 추가적인 쿼리가 실행되어야 합니다. 이러한 쿼리들이 많아지면 데이터 베이스에 대한 부하가 증가하고, 응답 시간이 길어지는 문제가 발생합니다. 예를 들어, 회원(Member)과 그 회원이 속한 팀(Team)의 관계가 있을 때, 각 회원을 검색하고자 할 때 N+1 문제가 발생할 수 있습니다. 즉, 모든 회원을 검색하는 쿼리를 실행한 후, 각 회원에 대해 해당 회원이 속한 팀을 추가로 검색하는.. 2024. 4. 12.
05 연관관계 매핑 시작 실전예제 1) 회원(Member) 엔티티 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; private String city; private String street; private String zipcode; @OneToMany(mappedBy = "member") private List orders = new ArrayList(); //Getter, Setter } 2) 주문(Order) 엔티티 @Entity @Table(name = "ORDERS") public class Order { @Id @GeneratedValue @Column(name = ".. 2023. 10. 4.
05 연관관계 매핑 기초 객체 관계 매핑(ORM)에서 가장 어려운 부분이 바로 객체 연관관계와 테이블 연관관계를 매핑하는 일이다. 객체의 참조와 테이블의 외래 키를 매핑하는 것이 이 장의 목표다. -> 방향, 다중성, 연관관계의 주인 5.1 단방향 연관관계 * 회원과 팀이 있다. * 회원은 하나의 팀에만 소속될 수 있다. * 회원과 팀의 다대일 관계다. 객체 연관관계 회원 객체는 Member.team 필드(멤버변수)로 팀 객체와 연관관계를 맺는다. 회원과 팀 객체는 단방향 관계다. 회원은 Member.team 필드를 통해서 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없다. 테이블 연관관계 회원 테이블은 TEAM_ID 외래 키로 팀 테이블과 연관관계를 맺는다. 회원 테이블과 팀 테이블은 양방향 관계다. 회원 테이블의 TEAM_.. 2023. 10. 4.
04 엔티티 매핑 JPA는 다양한 매핑 어노테이션을 지원하는데 크게 4가지로 분류할 수 있다. * 객체와 테이블 매핑:@Entity,@Table * 기본 키 매핑 : @Id * 필드와 컬럼 매핑 : @Column * 연관관계 매핑 : @ManyToOne, @JoinColumn 4.1 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부른다. @Entity 적용 시 주의사항은 다음과 같다 * 기본 생성자는 필수다. * final 클래스, enum,interface, inner 클래스에는 사용할 수 없다. * 저장할 필드에 final을 사용하면 안 된다. 4.2 @Table 속성 기능 기본값 name 매핑.. 2023. 9. 20.
03 영속성 관리 엔티티 메니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 3.1 엔티티 메니저 팩토리와 엔티티 메니저 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. //공장 만들기, 비용이 아주 많이 든다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); Persistence.createEntityManagerFactory("hello"); 를 호출하면 META-INF/persistence.xml에 있는 정보를 바탕으로 EntityManagerFactory를 생성한다. 이제부터 필요할 때마다 엔티티 메니저 팩토리에서 엔.. 2023. 9. 19.
반응형
LIST