티스토리 뷰

SPRING

프로젝트 작성시 순서 정리

cvcvcx9 2023. 4. 2. 21:51

내가 작업할 때 생각나는 것부터 하는 경향이 있다.

주먹구구식에서 탈피하기 위해 순서를 정해둘 생각이다.

지금은 JPA에 다시 익숙해지기 위해서 연습 프로젝트를 깃헙에 생성중인데,

생성한 깃헙의 커밋 순서를 보고 정리한 후, 그 순서를 보면서 프로젝트를 만들어나갈 예정이다.

순서가 일단 정해저있으면 어떤걸 만들지 라는 생각을 하지 않아도 되고, 즉 코드를 쓸 때 좀 더 코드에만 집중할 수 있기 때문에 순서를 정하고 작업해 나가기로 했다.

https://github.com/cvcvcx/jpaPrectice002

이 깃헙 링크의 작업 순서를 정리한다.

  • intelliJ의 설정에 있는 Build - gradle - Java 설정을 해주어야 한다. (boot3.0 버전부터 자바17이전버전지원안함)
  • 따라서, gradle에 javaEE에 의존하던 querydsl도 jakartaEE에 의존하도록 명시해주어야 한다.
// spring boot 3.0.0버전부터는 querydsl을 설정할 때, javaee를 사용하는 것이 아니라 jakartaEE를 사용하게 된다.
	//그래서 이렇게 설정 맨 뒤에 jakarta를 넣어주는 것이 중요하다.
	//2023년 12월까지 2.7.~ 버전이 지원되지만, 이후로는 보안지원이 종료되고 업데이트도 종료되기때문에 할 줄 알아야함
//만약 2.7 버전일 경우 jakarta를 없애고 jpa를 적어넣으면 적용이 됨
	implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta")//여기의 jakarta도 제거
	annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jakarta")//여기의 jakarta를 제거하고 jpa를 적어넣으면 2.7버전 기준으로 Querydsl이 동작하게 된다.
	annotationProcessor("jakarta.persistence:jakarta.persistence-api")
	annotationProcessor("jakarta.annotation:jakarta.annotation-api")

순서(실시간 수정중 2023.03.24)

  1. application.properties작성 - 데이터베이스를 설정한다.
  1. BaseEntity(@MappedSuperclass와 @EntityListeners(value=AuditingEntityListener.class)를 작성한다. — Applicaition에 @EnableJpaAuditing을 추가해야 사용가능
  1. BoardEntity를 작성한다.
  1. SpringJPARepository를 작성한다.
  1. BoardDTO를 작성한다.
  1. BoardSearchSort Enum을 작성한다. 페이지를 정렬하는 기준이다.
  1. PageRequestDTO를 작성한다. 페이지 리스트를 보여줄 때 받아오는 요청 리스트이다 즉, CustomRepository에서 매개변수로 쓰일 타입과, 리턴타입으로 쓰일 것들을 미리 준비한다.
  1. JpaQueryFactory를 CustomRepository에서 활용할 수 있도록 Bean등록을 한다. QueryDslJPAConfig라는 config클래스를 작성하는데, EntityManager는 @PersistenceContext를 이용해서 받아오고, - 스프링컨텍스트에 이미 있음 new JPAQueryFactory(entityManager)를 리턴하는 함수를 빈등록해서, Repository에서 사용할 수 있게끔 한다.
  1. Repsitory에서 조회하는 데이터를 Dto로 받기 위해 Dto의 생성자에 @QueryProjection을 붙여준다.
  1. CustomRespository를 작성한다. 복잡한 쿼리 또는 동적쿼리는 여기에서 처리한다.
  1. RepositoryImpl의 Page<BoardDTO>를 리턴하는 함수 findBoardPage를 작성한다. Pageable, List<BoardDTO> countQuery를 보내면 된다. 리턴할 때 PageableExecutionUtils를 이용하면 필요할 때만 카운트 쿼리문을 보낼 수 있어서 최적화가 가능하다. where의 조건은 BooleanBuilder를 생성해서 전달하고(Predicate 타입이 필요) OrderBy의 경우에는 OrderSpecifier 배열을 전달한다. List를 Array로 변경하는 과정 필요
  1. 보여줄 PageList를 담당하는 PageListResponseDTO를 작성한다. 현재 페이지, 총 페이지수, 한 번에 보여줄 게시글 수 , 페이지 리스트 시작 번호, 끝번호, 이전, 다음, 게시글 리스트, 페이지 번호리스트가 필요하다.
  1. 서비스, 컨트롤러를 작성한다.


Uploaded by N2T

'SPRING' 카테고리의 다른 글

@ModelAttribute 기본값 설정하기  (0) 2023.04.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함