반응형 Framework14 JPA - 플러시(Flush)란? JPA의 flush에 대해 알아보자. 플러시란 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 작업 Flush의 원리 보통 트랜잭션 Commit이 발생할때, flush가 동작한다. 이때, 쓰기지연 SQL저장소에 등록된 insert, update, delete query들이 전송된다. 여기서 중요한 점이, flush가 발생한 시점에 영속성 컨텍스트를 비우는게 아니라, 그대로 유지한채로 DB와 동기화를 하는 것이다. 따라서, 트랜잭션이라는 작업단위가 중요해지고 Commit직전에만 동기화하면 된다. Flush의 동작 구조 변경 감지 (Dirty Checking) 수정된 엔티티를 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 query) Flush를.. 2022. 12. 1. JPA - 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어인 영속성 컨텍스트에 대해 알아보자. 영속성컨텍스트란 엔티티를 영구 저장하는 환경 그렇다. 영속성 컨텍스트는 DB가 아닌, JPA의 EntityManager가 엔티티를 관리하는 형태이다. 여기서 영속성 컨텍스트에 저장하기 위해 비영속 상태의 객체를 만들어서 영속성 컨텍스트에 저장해보자! 먼저, 비영속상태란 엔티티객체를 생성하고 EntityManager에게 위임시켜놓지 않은 상태이다. // 비영속상태의 객체 Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 여기서 EntityManager의 persist를 통해 영속성 컨텍스트에 저장할 수 있다. EntityManager em.. 2022. 11. 25. TDD를 위한 JUnit5 사용법 4 - 테스트 반복하기 (RepeatedTest, ParameterizedTest) 테스트를 여러 번 반복해서 검증하고 싶다면, JUnit5에선 두개의 어노테이션을 통해 간단하게 지원해준다. @RepeatedTest @ParameterizedTest 먼저, RepeatedTest에 알아보자. RepeatedTest 테스트 반복 @RepeatedTest(10) void repeatTest() { System.out.println("test"); } RepeatedTest 어노테이션을 통해 손쉽게 해당 테스트코드를 10회 반복 할 수 있다. 여기서 RepeatedTest 어노테이션에서 RepetitionInfo 객체를 파라미터 값으로 넘겨 줄 수 있다. 해당 객체에는 현재 테스트의 수행횟수, 총 반복횟수를 알 수 있다. @RepeatedTest(10) void repeatTest(Repet.. 2022. 9. 6. TDD를 위한 JUnit5 사용법 3 - 조건, 환경에 따른 테스트 실행 Junit에서는 특정한 OS, JAVA 버전, 환경변수, 시스템변수 등 이러한 환경이나 조건에 따라 테스트 실행을 지원해주는 메서드가 존재한다. 바로 org.junit.jupiter.api.Assumeptions.* 에 해당하는 assumeTrue(조건) assumeThat(조건, 테스트) 이다. 이러한 assume을 활용하여 특정 환경변수나 자바버전이나 이런 경우에 따라 테스트를 실행할 수 있다. 예를 봐보자. @Test @DisplayName("스터디 만들기 ") void create_new_study() { String test_env = System.getenv("TEST_ENV"); assumeTrue("LOCAL".equals(test_env)); System.out.prinln("LOCAL".. 2022. 9. 3. 이전 1 2 3 4 다음 반응형