본문 바로가기
Spring/JPA

JPA TEST 코드 예제 2

by step 1 2021. 7. 11.
반응형

flush(), saveAndFlush(): 쿼리를 조절하는 메소드가 아니라 DB 반영 시점을 조절하는 메소드이다.

//        userRepository.save(new User("new martin", "Newmartin2@fastcampus.com", LocalDateTime.now(), LocalDateTime.now()));
        userRepository.saveAndFlush(new User("new martin", "Newmartin2@fastcampus.com", LocalDateTime.now(), LocalDateTime.now()));
//        userRepository.flush();
        userRepository.findAll().forEach(System.out::println);

 

count(): 데이터 갯수를 구하는 메소드

// 데이터 갯수 구하기
        long count = userRepository.count();
        System.out.println(count);

 

existsById(): 해당 아이디 값이 존재하는지 구하는 메소드

// 데이터 존재 유무 체크
        boolean exists = userRepository.existsById(2L);
        System.out.println(exists);

내부적으로 count를 해줘서 그걸로 존재유무를 판단한다.

 

원하는 데이터를 삭제하는 메소드

delete(): 실행전에 조회를 한번 실행한 후 삭제 진행 그 후 재 조회 한다.

userRepository.delete(userRepository.findById(1L).orElseThrow(RuntimeException::new));

deleteById(): 실행전에 조회를 한번 실행한 후 삭제 진행 그 후 재 조회 한다.

userRepository.deleteById(2L);
userRepository.findAll().forEach(System.out::println);

확인

deleteAll(): 모든 데이터를 삭제하는 메소드, 반복적으로 delete가 동작한다.

userRepository.deleteAll();

deleteAll() 메소드를 이용해서 원하는 데이터를 골라서 삭제하는 방법

userRepository.deleteAll(userRepository.findAllById(Lists.newArrayList(1L, 3L)));

 

deleteAllInBatch(): 각각 delete를 하지 않고 or 문법을 이용해서 한번에 delete를 진행한다.

모든 데이터를 삭제하는 방법, 이전에 데이터를 조회하지 않고 삭제를 진행한다.

userRepository.deleteAllInBatch();

원하는 데이터를 삭제하는 방법

userRepository.deleteAllInBatch(userRepository.findAllById(Lists.newArrayList(1L, 4L)));

 

페이징처리하기 위한 메소드

PageRequest.of(): 0부터 시작되는 사용자가 원하는 페이지의 데이터를 가져오는 메소드

        // 페이징 처리 예제
        Page<User> users = userRepository.findAll(PageRequest.of(0,3));
        System.out.println("현재 페이지: " + users);
        System.out.println("총 데이터 수: " + users.getTotalElements());
        System.out.println("총 페이지 수: "+ users.getTotalPages());
        System.out.println("현재 페이지 데이터 수: " + users.getNumberOfElements());
        System.out.println("정렬 상태: " + users.getSort());
        System.out.println("현재 페이지 데이터 크기: " + users.getSize());
        users.getContent().forEach(System.out::println);

 

검색을 처리하는 메소드: example

        // 데이터 검색 예제
        ExampleMatcher matcher = ExampleMatcher.matching()
                // 검색을 제외
                .withIgnorePaths("name")
                // like 조건을 이용하여 검색, endsWith 을 이용하여 마지막 문장이 일치하는지 확인
                .withMatcher("email", endsWith());
        Example<User> example = Example.of(new User("ma", "fastcampus.com"),matcher);
        userRepository.findAll(example).forEach(System.out::println);

        // 정확히 일치하는지 확인 and 연산 이용
        Example<User> example2 = Example.of(new User("martin", "martin@fastcampus.com"));
        userRepository.findAll(example2).forEach(System.out::println);

        User user = new User();
        user.setEmail("ma");
        user.setName("da");
        ExampleMatcher matcher1 = ExampleMatcher.matching().withMatcher("email", contains());
        Example<User> example1 = Example.of(user, matcher1);
        userRepository.findAll(example1).forEach(System.out::println);

반응형