티스토리 뷰

728x90
반응형

1. 데이터 베이스 접근 로직 테스트 정의 1

도메인 설계 내용을 바탕으로 DB와 연동하는 로직을 구상하고 테스트한다. 

  • 기본: 데이터 베이스 접근 로직 테스트 정의 프로젝트 카드를 만든 뒤, 이슈를 생성하고 gitkraken에서 gitflow 설정

(1) 데이터 베이스 선택

  • MySQL : 가장 많이 사용되는 오픈 소스 데이터 베이스이다.
  • 어떤 데이터 베이스가 최근에 가장 많이 사용되는지 체크하는 것도 좋다.
    • db engines 웹 사이트에서 확인 가능 -> oracle이 1등 mysql이 2등
    • db engines wiki가 기준을 설명해준다.

(2) DB에 접근할 수 있도록 환경 설정하기

  • MySQL 설치
    • MySQL 공식 홈페이지에서 Downloads > community or workbench 설치
    • 혹은 bash 창에서 명령어를 통해 다운 받을 수 있다.
# MAC
brew install mysql
#Linux
yum install mysql
  • IDEA로 이동하여 Database 탭 선택 (view에서 찾을 수 있음 / ctrl+shift+a (find action))
  • data source 추가 > mysql 선택
    • 플러그 인 되어 있는 datagrip가 작동하는 것 (jetbrans에서 제공) : 데이터 베이스 통합 관리 도구 -> client 설치 필요가 없어진 것

mysql 설정 정보 (패스트캠퍼스 강의 내용 중)

  • 데이터 베이스에서 ctrl + enter를 통해 sql 문 실행 가능하다.
  • user 계정 생성
# board 데이터 베이스 생성
create database board;

# user 생성
create user 'username'@'localhost' identified by 'testpassword!!';

# user 생성 확인
select 'user' from 'mysql'.'user';

# 권한 확인
show grants for 'username'@'localhost'; 

# board에 한해서 권한 주기 + grant option으로 권한 주는 것도 가능
grant all on 'board'.* to 'username'@'localhost' with grant option;

# 권한 정책에 반영되게 하기 위해 권한 테이블을 다시 읽게 해준는 것
flush privaileges;
  • spting initializr에 가서 새로 추가할 프로그램들의 dependencies를 찾는다.
    • JPA
    • Mysql Driver
    • H2 Database
  • build.gradle에 dependencies 추가해준다.
  • JPA Buddy에서 제공해주는 플러그인은 JPA 를 사용할 때 필요한 작업을 간편화 해준다.
  • resources > application.properties 에서 jpa에 접근하기 위한 properties를 셋팅해줘야 한다.
    • 이때 application.properties 를 application.yaml 파일로 변경해준다.
    • yaml파일을 활용하면 spring으로 시작하면 자동 완성되는 내용을 볼 수 있다.

 

(3) 테스트

  • 지난번에 작성한 Article.java 파일은 도메인만 설명하고 있다.  JPA 어노테이션을 사용하여 Entity로 변경할 것이다. 
    • Article 클래스에 붙는 어노테이션
      • @Getter
      • @TeSrting
      • @Table(indexes = {@Index(columnList = "title",
                                       @Index(columnList = "hashtag",
                                       @Index(columnList = "createedAt",
                                       @Index(columnList = "createdBy"})
      • @Entity
    • 각 필드에 어노테이션 붙임
      • id : 자동 번호 부여
        • @ID
        • @GeneratedValue(strategy = GenerationType.IDENTITY)
      • title, content,hashtag 
        • @Setter
      • 나머지 : JpaConfig의 EnableJpaAuditing 활용
        • @CreatedDate - createdAt
        • @CreatedBy - createdBy
        • @LastModifiedDate - modifiedAt
        • @LastModifiedBy - modifiedBy
  • project 폴더 아래 config > JpaConfig.java 생성
    • @Configuration
    • @EnableJpaAuditing
  • JpaConfig
    • 작성자 정보를 다루기 위한 셋팅 -> uno로 일단 설
public class JpaConfig {
	@Bean
    public AuditorAware<String> auditorAware() {
    	return () -> Optional.of("uno"); // 인증 기능할 때 수정 예정
    }
}
  • NOT NULL vs NULL
    • Not null : @Column(nullable = false)  : 기본 값이 true라 없으면 자동으로 nul l되는 것으로 인식한다.
  • 정보의 크기는 @Column(length = 1000) 방식으로 넣을 수 있다.
  • Article() 생성자를 생성할 때는 protected 로 만든다.
  • title, content, hashtag가 포함된 Article 생성자를 private으로 생성하고, public static Article of (title, content, hashtag) 를 통해 private Article을 불러올 수 있도록 한다.
  • Article 객체가 equals() and hashCode() 를 생성하여 비교 가능하도록 만든다. 이때 id만 비교해도 되도록 구현한다. (not null 사용 id != null)
  • java 14 pattern matching 확인 -> java 14부터 제공

 


 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완

728x90
반응형
댓글