티스토리 뷰
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 설치 필요가 없어진 것
- 데이터 베이스에서 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
- id : 자동 번호 부여
- Article 클래스에 붙는 어노테이션
- 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부터 제공
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 2. 게시판 서비스 만들기 - 데이터베이스 접근 로직3 & API 테스트 정의 (0) | 2023.08.30 |
---|---|
[Java Project] Part 2. 게시판 서비스 만들기 - 데이터베이스 접근 로직2 (0) | 2023.08.29 |
[Java Project] Part 2. 게시판 서비스 만들기 - 도메인 설계 (0) | 2023.08.27 |
[Java Project] Part 2. 게시판 서비스 만들기 - 스프링 부트 프로젝트 (0) | 2023.08.26 |
[Java Project] Part 2. 게시판 서비스 만들기 - 유즈케이스2 및 API 설계 (0) | 2023.08.25 |
댓글