일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 알고리즘
- JDBC
- SpringBoot
- 김영한
- Servlet
- Android
- 그리디
- jpa
- http
- kotlin
- Thymeleaf
- Greedy
- 자바
- Proxy
- JPQL
- transaction
- db
- 스프링 핵심 기능
- java
- pointcut
- spring
- QueryDSL
- springdatajpa
- 스프링 핵심 원리
- 스프링
- AOP
- Exception
- Spring Boot
- 백준
- 인프런
- Today
- Total
목록jpa (149)
개발자되기 프로젝트
이전에 page에 관련해서 간략히 정리했던 부분이 있다. https://bsh-developer.tistory.com/13 아래처럼 name이 일치하는 entity를 page로 return을 해보자. 참고로 Pageagble은 paging을 요청하는 것을 의미한다. Page findByName(String name, Pageable pageable); Page findByName(String name, Pageable pageable); System.out.println("find by name with paging : " + userRepository.findByName("hyun", PageRequest.of(0,2, Sort.by(Sort.Order.desc("id")))).getContent())..
1.이름으로 top 1 찾기 List findTop1ByName(String name); System.out.println("find top 1 by name : " + userRepository.findTop1ByName("hyun")); where 조건에서 limit가 걸린걸 볼 수 있다. where user0_.name=? limit ? find top 1 by name : [ User(name=hyun, email=hyun@naver.com, createdAt=2021-05-27T20:20:01.032253, updatedAt=2021-05-27T20:20:01.032253, id=1) ] 2. last one 찾기 그러면 혹시 음 findLast1_같은 형식도 가능할까..??? 불가능하다. 대신..
이번엔 bean값과 관련된 keyword를 살펴보자. 1. IS_NOT_NULL List findByIdIsNotNull(); System.out.println("find by id is not null : " + userRepository.findByIdIsNotNull()); id가 primary key 여서... null인 경우가 없다.. 2. in / notIn 자주 사용된다~~~리스트 안에 있는 이름들을 가진 entity를 찾아보자. List findByNameIn(List names); System.out.println("find by name in : " + userRepository.findByNameIn(Lists.newArrayList("hyun", "kim"))); 테스트 결과 해당 ..
앞서 Query Method에서 사용한 예시 외에도 부가적으로 제공하는 키워드가 있다. and, or등 여러 logical keywork가 존재한다. 써보자! 1.And / Or 먼저 And!!!!! email과 name을 둘다 사용해서 찾아보자! --> findByEmailAndName(String email, String name)을 만들들고 테스트! List findByEmailAndName(String email, String name); System.out.println("find by email and name : " + userRepository.findByEmailAndName("hyun@google.com", "hyun")); 테스트 결과를 보면 where 조건에서 email과 name이..
findByName()이라는 method를 만들어 보자. 진짜 간단하다.. UserRepositlry interface에 아래와 같이 추가했당. public interface UserRepository extends JpaRepository { List findByName(String name); } 그리고 아래처럼 test코드를 작성해보자. @Test void select(){ System.out.println(userRepository.findByName("hyun")); } 그러면 이름이 일치하는 entity가 List타입으로 불어와졌다...신기함.. JPA를 사용했을때 체감으로는 쉽게 작성하고 많은 혜택을 받는게 쿼리메서드 생성한 repository에 naming base로 method를 선언하기..
실제 구현체 코드를 뜯어보자! 1. update query user1명 저장 --> id가 1인 entity를 가져와서 email수정후 다시 저장해보자. @Test void crud(){//create, read, update, delete userRepository.save(new User("david", "david@fast.com"));//insser query동작 User user = userRepository.findById(1L).orElseThrow(RuntimeException::new); user.setEmail("sdfsdf-updated@naver.com"); userRepository.save(user); } save:insert query-> findbyId: select quer..
1. Page Paging : DB에 저장된 entity를 page로 나누는 것. page에 대한 설명은 아래와 같다. slice에 대한 정보와 전체에 대한 정보를 가지고 있다. A page is a sublist of a list of objects. It allows gain information about the position of it in the containing entire list. public interface Page extends Slice Slice : data 묶음의 일부 덩어리. slice에서 제공하는 정보는 현재 slice에 대한 정보만을 준다. slice에서 제공하는 method int getNumber(); List getContent(); int getNumberOfEl..
1. flush() flush() : JPA context에 있는 DB값을 DB에 적용하도록 함. @Test @Transactional void crud(){//create, read, update, delete userRepository.save(new User("new hyun", "newHyun@ddd.com")); userRepository.flush(); userRepository.findAll().forEach(System.out::println); } 2. saveAndFlush() save() 와 flush() 를 합한 method로 추가적인 flush() method 사용 절차가 필요 없다. @Test @Transactional void crud(){//create, read, updat..