Spring Boot 어플리케이션 개발 순서

roon2020·2021년 5월 30일
1

spring

목록 보기
14/16
post-thumbnail

간단한 어플리케이션 개발 순서를 정리.
주제 : 요구사항 분석,비즈니스 로직 등을 파악해 게시판을 작성하는 상황.
기능 : 회원,게시글,댓글이 있는 게시판.
사용 기술 : spring boot,JPA를 사용한다고 가정.

화면 설계

화면을 구현하는게 아니라 일단 어떻게 생긴 것을 만들지에 대한 논의

  • 화면에 무엇을 표시?
  • 화면에 표시하기 위해 구현할 기능들

프로젝트 생성

  • pom.xml에 의존성,plugin 추가
  • spring boot 버전 설정
    spring boot 버전이 너무 높으면 junit 5가 기본
    기본으로 junit 4를 쓰기 위해 2.1.9.RELEASE 정도로 사용.
  • application.properties에 DB 정보 및 hibernate 설정

DB,entity 클라스 설계

  • 필요한 테이블은?
    초기에는 일단 연관관계를 생각하지 않고 작성
  • 테이블 간의 연관관계 파악
    PK와 FK에 주목.
    테이블 간의 관계는 PK가 다른 곳에서 FK로 몇번 사용됐는지가 중요
    단방향 또는 양방향. 단방향을 선호
    FK를 사용하는 엔티티가 PK를 가진 엔티티를 참조하는 구조로 설계
    예를 들어 member,board 엔티티는 1:n으로 해석해서 아래처럼 설계

- fetch : JPA에서 연관관계에 있는 데이터를 가져오는 것.
- fetch type
 
 1. 즉시 로딩 (EAGER) 
 : 무조건 조인. 연관관계에 있는 테이블들을 모두 가져옴.
 성능 저하 올 수 있음.
 
 2. 지연 로딩 (LAZY) 
 : 필요하면 조인. 
 
 3. 번외
 JPQL

repository

  • 엔티티별로 repository 작성
  • 나중에 조인해서 가져올 데이터들이 필요하면 @Query 이용
    (Querydsl,namingMethod는 아직 안 익숙)

테스트

테스트 클래스 만드는 intellij 단축키 : [ctrl]+[shift]+[T]

  • repository 이용한 create,read 정도를 테스트
  • 연관관계 테스트
    참조되는 순으로 테스트. 즉, Board가 Member를 참조하고 Reply가 Board를 참조하므로 Member,Board,Reply 순으로 테스트.
    테스트 데이터는 hibernate auto-ddl을 update로 해두면 테스트 결과로 insert된 데이터들이 어플리케이션 세션이 끝나도 유지.
    create로 두면 어플리케이션 실행마다 DB drop 후 다시 생성.
    테스트 코드에 @Transactional을 사용하면 테스트 이후 DB에 insert된 데이터들이 롤백.
  • 필요한 기능들을 테스트 + repository에 쿼리 추가 + hibernate가 실제 실행한 sql 분석.

서비스 계층

  • domain (entity,VO 등) ,repository가 완성됐으므로 service layer,dto를 개발.

컨트롤러,화면

  • 컨트롤러,url 설계
  • view단의 코드 작성
  • 기능 추가
    검색 등
profile
keep in positive mindset. I've got this.

0개의 댓글