게시판

Shaun·2021년 7월 29일
1

project

목록 보기
3/9

기본엔티티 만들기

  • 엔티티 관련 작업을 하다보면, 데이터 등록 시간수정 시간과 같이 자동으로 추가되고 변경되어야 하는 컬럼들이 있다.
  • @MappedSuperclass = 이클래스는 테이블로 생성되지 않는다

Mybatis VS JPA

mybatis는 sql을 위해서 전달되는 객체는 모두 sql처리로 끝난후에 어떻게 되든 상관 없는 객체들이지만 JPA는 엔티티 객체들을 영속 컨텍스트(persistence contxt) 라는 곳에 관리된다.이 객체들이 변경되면 결과적으로 데이터 베이스에 이를 반영 하는 방식이다.

엔티티 객체에는 어떤 변화가 일어나면 그 변화를 감지하는 리스너 가 있다.

@EntityListeners = 리스너

  • 이를 통해 regDate, modDate 에 적절한 값이 들어간다

@CreateDate = JPA 엔티티 생성시간 처리
@LastModifiedDate = 최종 수정 시간


※ 리스너를 활성화 시켜주기 위해서 @EnableJpaAuditing 설정을 Application에 추가 해야한다.

엔티티 만들기

-실제로 db에서 쓸 엔티티를 만들어 준다.

동적 쿼리 처리를 위한 Querydsl 설정

why Querydsl

jpa 쿼리 메서드, @Query 는 간단한 검색 조건을 만들때 충분하지만 복잡한 조합텍스트은 Querydsl 을 쓴다.

Querydsl 설정

1.plugins 항복에 querydls 관련 부분추가
2. dependencies 추가
3. Gradle에서 사용할 task 추가
4. Q도메인 생성(Querydsl 은 엔티티가 아닌 Q도메인을 사용)
5. repositoryu에 QueryPrediacateExecutor 추가

denpency 추가

task 추가

  • compileQuerydsl 을 실행하면 q도메인 생성

plugins 추가

QueryPrediacateExecutor 추가

엔티티 Test

완벽하다 생각해도 항상 테스트를 해주자

앤티티-수정

  • 앤티티 객체가 애플리케이션 내부에서 변경되면 JPA를 관리하는 쪽이 복잡해질 우려가 있기 때문에 가능하면 최소한의 수정이 가능하도록 하는것을 권장한다.

  • 수정 메서드를 추가 해준다.

앤티티수정 Test

  • 코드설명
    -JPA 를 구현한 인터페이스를 통해 jpa 기본기능 '조회' 기능( 반환값 optional)

-결과 출력 후 메서드 실행

-마지막 jpa 기본기능 'update' 로 DB 에 수정 내용 저장

Querydsl 테스트

-단일항목 검색 테스트

  • 코드설명

-엔티티 -> q도메인 =컬럼들 변수로 사용 가능

-pageable 기본정렬을 해준다(1페이지당,10개씩, gno역순 정렬)

-BooleanBuilder = 조건문을 담는 컨테이너라 생각하자

-BooleanExpression = 조건문

-만들어진 조건문은 and나 or 같은 키워드와 결합

-BooleanBuilder 은 repository에 추가된
QueryPredicateExcutor 인터페이스의 findAll() 사용 가능(pageable 파라미터 = 반환타입 page)

※ 이를 통해 페이지 처리검색 처리가 가능하다.

다중 항목 검색 테스트(바뀐부분만)

  • 단일 항목과 크게 다른점이 없다. 다른점은 조건을 하나 더만들어서 builder 넣어 준것뿐
profile
호주쉐프에서 개발자까지..

0개의 댓글

관련 채용 정보