Spring/JPA19 JPA @Query @Modifying 벌크 삭제 연산시 연관관계 문제 해결하기 (with SQLIntegrityConstraintViolationException) - 문제 여러 데이터를 삭제할 때 @Query와 @Modifying를 사용하는 벌크 연산을 통해 성능 최적화를 시도했으나 SQLIntegrityConstraintViolationException 예외와 함께 삭제가 진행되지 않는 상황이 발생했다. [DataBase - Table] shiba [DataBase - Table] shiba_house [Entity] Shiba @Entity @Table(name = "shiba") @Getter @ToString @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Shiba extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDE.. 2023. 1. 22. JPA @Query @Modifying 벌크 연산시 자동 업데이트(Auditing) 주의사항 - 문제 @Query + @Modifying를 활용해 업데이트 벌크 연산을 진행했는데, Auditing + @LastModifiedDate가 작동하지 않는 것을 확인했다. 1. Auditing과 @LastModifiedDate을 적용하고 10개의 임의 데이터를 추가한다. 2. @Query + @Modifying을 활용한 벌크 연산을 진행한다. - ShibaRepository @Modifying(clearAutomatically = true) @Query("update Shiba s set s.age = :age where s in (:shibaList)") int updateAllShibaAge(@Param("age") Integer age, @Param("shibaList") List shibaList.. 2023. 1. 15. JPA, ORM 그리고 패러다임의 불일치 # JPA(Java Persistence API), ORM(Object-Relational Mapping)은 무엇인가? JPA는 자바 ORM 기술 표준으로서, 애플리케이션과 JDBC 사이에서 동작한다. ORM은 객체와 '관계형 데이터베이스를 매핑'한다는 의미이다. # ORM 프레임워크 특징 개발자가 조회/저장/수정/삭제 작업을 위해 SQL문을 직접 작성하지 않고, 자바 컬렉션 다루듯이 사용할 수 있다. 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해 주는 역할을 수행한다. 개발자는 데이터 중심인 관계형 데이터베이스를 사용해도 애플리케이션 개발에만 집중할 수 있다. # 패러다임의 불일치 객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 기능과 표현 방법이 다르다. 따라서.. 2022. 7. 24. 이전 1 2 3 다음