Java/Spring Data Jpa14 벌크연산(Bulk Operation) 기존연산ex) 모든 직원들 연봉 30% 인상em.find() 메서드를 통해 모든 직원을 리스트로 조회직원 엔티티의 연봉을 30% 증가Commit 시점에 변경감지(Dirty Checking)가 일어나며 update 쿼리 실행만약 리스트로 조회된 결과가 몇십만, 몇백만개라면 성능의 문제 발생따라서 벌크연산이 필요벌크연산(Bulk Operation)쿼리 한 번으로 여러 테이블 로우 변경(엔티티)executeUpdate() 메서드를 통해 벌크연산 수행executeUpdate()의 결과는 영향받은 엔티티의 수UPDATE, DELETE 지원String qlString = "update Product p " + "set p.price = p.price * 1.1" + .. 2024. 1. 17. Named 쿼리 Named 쿼리미리 정의해서 이름을 부여해두고 사용하는 SQL미리 정의하기 때문에 정적 쿼리어노테이션이나 XML에 정의@Entity@NamedQuery( // Named 쿼리 사용 name = "Member.findByUsername", query = "select m from Member m where m.username = :username")public class Member{ ...}...public class JpaMain { public static void main(String[] args) {List resultList = em.createNamedQuery("Member.findByUsername", Member.class) .setParameter("u.. 2024. 1. 17. 페치조인 페치조인(fetch join)JPQL에서 성능 최적화를 위해 제공하는 기능으로 SQL 조인 종류가 아님연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능join fetch 명령어 사용N+1 문제Team teamA = new Team();teamA.setName("팀A");em.persist(teamA);Team teamB = new Team();teamB.setName("팀B");em.persist(teamB);Member member1 = new Member();member1.setUsername("회원1");member1.setTeam(teamA);em.persist(member1);Member member2 = new Member();member2.setUsername("회원2");memb.. 2024. 1. 15. 값 타입 컬렉션 값 타입 컬렉션값 타입을 하나 이상 저장할 때 사용@ElementCollection, @CollectionTable주요 특징데이터베이스는 컬렉션을 같은 테이블에 저장 불가 -> 별도의 테이블이 필요@Entitypublic class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String userName; @Embedded private Address homeAddress; // 값 타입 컬렉션 사용 @ElementCollection // FAVORITE_FOOD 테이블 정의 @CollectionT.. 2024. 1. 2. 임베디드 타입 임베디드 타입(복합 값 타입)새로운 값 타입을 직접 정의할 수 있음주로 기본 값 타입을 모아서 만들기때문에 복합 값 타입이라고도 함@Embeddable : 값 타입을 정의하는 곳에 표시@Embedded : 값 타입을 사용하는 곳에 표시기본 생성자 필수import javax.persistence.Embeddable;import java.time.LocalDateTime;@Embeddablepublic class Period { //기간 private LocalDateTime startDate; private LocalDateTime endDate; public Period() { } public Period(LocalDateTime startDate, LocalDateTim.. 2023. 12. 30. 영속성 전이 영속성 전이(CASCADE)특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함 제공(부모 엔티티 저장 시 자식 엔티티도 함께 저장)영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없음종류ALL : 모두 적용PERSIST : 영속REMOVE : 삭제MERGE : 병합REFRESH : refreshDETACH : detach@Entitypublic class Parent { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) .. 2023. 12. 29. 이전 1 2 3 다음