Spring61 Hamcrest 라이브러리 Matcher를 활용하여 JUnit 테스트 가독성 향상하기 JUnit 테스트의 가독성을 높일 수 있도록 Hamcrest에서 제공하는 몇 가지 Matcher 활용법에 대해 소개한다. 0. 준비 우선, 최신 버전의 hamcrest 라이브러리를 받는다. (현재 최신 버전은 2.2) 참고로 스프링에서는 기본적으로 assertj와 함께 해당 라이브러리를 제공한다. org.hamcrest hamcrest test 그다음 assertThat + hamcrestMatcher 조합을 통해 가독성 있는 테스트를 해본다. assertThat의 정적 메서드 파라미터의 첫 번째 인자는 검증하고자 하는 값, 두 번째는 Matcher를 사용한다. * 여기서 assertThat은 hamcrest 패키지에 있는 assertThat을 사용한다. public static void assertTh.. 2023. 1. 29. JPA @Where 일괄 조회 사용법 및 문제점과 해결방안 프로젝트 진행 중, 엔티티 특정 필드의 상태가 'N'인 모든 데이터가 조회되지 않도록 일괄 적용할 방법이 필요하여 @Where를 적용하게 되었고 사용 방법 및 적용 이후 발생한 문제와 다양한 테스트 경험에 대해 공유하고자 한다. - 사용 방법 @Where의 사용방법은 굉장히 단순하다. 엔티티 클래스에 org.hibernate.annotations 패키지의 @Where를 클래스 단위에 작성하면 된다. (해당 어노테이션은 클래스뿐 아니라 메서드, 필드 단위도 설정은 가능하지만 테스트를 진행하지는 않았다.) 만약, 입양되지 않은 상태의 시바견 데이터는 항상 조회 조건에 포함이 안되었으면 좋겠다.라고 한다면 is_adopted 필드의 상태가 'N'이 아닌 데이터만 조회할 수 있도록 설정한다. @Where(cla.. 2023. 1. 24. 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 ··· 5 6 7 8 다음