mybatis는 sql을 위해서 전달되는 객체는 모두 sql처리로 끝난후에 어떻게 되든 상관 없는 객체들이지만 JPA는 엔티티 객체들을 영속 컨텍스트(persistence contxt) 라는 곳에 관리된다.이 객체들이 변경되면 결과적으로 데이터 베이스에 이를 반영 하는 방식이다.
엔티티 객체에는 어떤 변화가 일어나면 그 변화를 감지하는 리스너 가 있다.
@EntityListeners = 리스너
@CreateDate = JPA 엔티티 생성시간 처리
@LastModifiedDate = 최종 수정 시간
※ 리스너를 활성화 시켜주기 위해서 @EnableJpaAuditing 설정을 Application에 추가 해야한다.
-실제로 db에서 쓸 엔티티를 만들어 준다.
why Querydsl
jpa 쿼리 메서드, @Query 는 간단한 검색 조건을 만들때 충분하지만 복잡한 조합텍스트은 Querydsl 을 쓴다.
1.plugins 항복에 querydls 관련 부분추가
2. dependencies 추가
3. Gradle에서 사용할 task 추가
4. Q도메인 생성(Querydsl 은 엔티티가 아닌 Q도메인을 사용)
5. repositoryu에 QueryPrediacateExecutor 추가
완벽하다 생각해도 항상 테스트를 해주자
-결과 출력 후 메서드 실행
-마지막 jpa 기본기능 'update' 로 DB 에 수정 내용 저장
-엔티티 -> q도메인 =컬럼들 변수로 사용 가능
-pageable 기본정렬을 해준다(1페이지당,10개씩, gno역순 정렬)
-BooleanBuilder = 조건문을 담는 컨테이너라 생각하자
-BooleanExpression = 조건문
-만들어진 조건문은 and나 or 같은 키워드와 결합
-BooleanBuilder 은 repository에 추가된
QueryPredicateExcutor 인터페이스의 findAll() 사용 가능(pageable 파라미터 = 반환타입 page)
※ 이를 통해 페이지 처리와 검색 처리가 가능하다.