반응형
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);
반응형
'Spring > JPA' 카테고리의 다른 글
QueryMethod 예제 2 (0) | 2021.07.17 |
---|---|
Query Method 구현 1 (0) | 2021.07.17 |
JPA 메소드 예제 3 - update (0) | 2021.07.11 |
JPA 설정 및 테스트코드 예제 1 (0) | 2021.07.04 |
JPA 개념 및 Test controller 작성, lombok을 이용한 dto 작성, h2를 이용한 데이터베이스 설정 (0) | 2021.07.03 |