전체 글 56

14일차

오늘은 Part2. 게시판 서비스 강의의 `데이터베이스 접근 로직 테스트 정의3` 부분을 학습하였다. @JPA AuditingJPA를 사용하여 테이블에 매핑할 때 도메인들이 공통적으로 가지고 있는 필드나 컬럼이 존재한다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼이 있다.Audit은 Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능이다. 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 후에 update를 하는 경우 매번 시간 데이터를 입력하여 주어야 하는데, audit을 이용하면 자동으로 시간을 매핑하여 데이터베이스의 테이블에 넣어주게 된다. @JPA Auditing 사용 방법JpaConfig.class 파일 추가@EnableJpaAuditing@Configu..

프로젝트 2023.03.05

13일차

오늘은 Part2. 게시판 서비스 강의의 `데이터베이스 접근 로직 테스트 정의2` 부분을 학습하였다. 오늘에서야 드디어 엔티티를 만드는 과정을 시작했다. 엔티티에 @Setter 사용 금지엔티티를 작성할 떄 @Setter를 붙이지 않는다. 무분별하게 @Setter를 사용하면 여기저기서 엔티티의 값을 변경할 수 있다. 따라서 데이터를 변경해야하면 @Setter를 사용하지 말고, 따로 메소드를 작성하는 것이 객체의 일관성을 보장할 수 있는 안전한 방법이다. 엔티티 기본 생성 접근자를 protected로기본 생성자 접근자를 protected로 변경하면 new Entity() 사용을 막을 수 있어서 객체의 일관성을 더 유지할 수 있다.롬복을 사용한다면 엔티티에 @NoArgsConstructor(access = A..

프로젝트 2023.03.04

12일차

오늘은 Part2. 게시판 서비스 강의의 `데이터베이스 접근 로직 테스트 정의1` 부분을 학습하였다. 데이터베이스 접근 로직 테스트 정의에서는 도메인 설계 내용을 바탕으로 DB와 연동하기 위한 방법을 구상하고, 세팅을 하고, 테스트를 작성한다. 먼저, 데이터베이스를 선택할 때 여러가지 판단 기준을 가지고 선택해야하는데 어떤 데이터베이스가 가장 많이 쓰이는지도 기준이 될 수 있다.https://db-engines.com/en/ DB-Engines - Knowledge Base of Relational and NoSQL Database Management SystemsDB-Engines DB-Engines is an initiative to collect and present information on da..

프로젝트 2023.03.03

11일차

오늘은 Part2. 게시판 서비스 강의의 `도메인 설계(2)`  부분을 학습하였다. 오늘 수업에서는 자바 클래스로 도메인을 표현하는 과정을 학습하였다. 저번에 작성한 ERD 다이어그램을 참고하여서 Article과 ArticleComment 도메인을 작성하였다. Articlepublic class Article {    private Long id;    private String title; // 제목    private String hashtag; // 해시태그    private String content; // 본문    private LocalDateTime createdAt; // 생성일시    private String createdBy; // 생성자    private LocalDateTim..

프로젝트 2023.03.02

10일차

오늘은 Part2. 게시판 서비스 강의의 `도메인 설계(1)` 부분을 학습하였다. 도메인 설계에서는 도메인 ERD 다이어그램(문서)을 그리고 자바 클래스(개발)로 도메인을 표현하는 과정을 학습한다.이번 시간에는 ERD 다이어그램을 그리는 부분을 학습하였다. ERD (Entity Relationship Diagram)ERD는 단어에서 의미하는 그대로 'Entity 개체'와 'Relationship' 관계를 중점적으로 표시하는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓은 다이어그램이다.개체 관계도라고도 불리며 요구분석사항에서 얻은 엔티티와 속성들의 관계를 그림으로 표현한 것이다.  게시판 서비스 ERD 다이어그램에서 회원 로그인과 관련된 부분은 일단 제외하고 핵심적인 게시글(Article)과 댓글(A..

프로젝트 2023.03.01

9일차

오늘은 Part2.게시판 서비스 강의의 `스프링 부트로 프로젝트 시작하기(2)` 부분을 학습하였다. 스프링부트 프로젝트를 IntelliJ에서 Spring Initailizer를 사용해서 시작하였다.그 외에 https://start.spring.io/ 에서 프로젝트를 생성할 수 있지만 파일 시스템에 들어가서 압축을 풀어야 하는 번거로움이 있기 때문에 IntelliJ에서 프로젝트를 만드는 방법을 선택했다.프로젝트 이름은 project-board, Language는 Java, Type은 gradle, group은 com.board, Artifact는 project-board, JDK는 17, Packiging은 Jar로 설정해주었다.스프링 부트 버전은 2.7.0을 사용한다.Dependencies는 일단은 Sp..

프로젝트 2023.02.28

8일차

오늘은 Part2.게시판 서비스 강의의 `스트링 부트로 프로젝트 시작하기(1)` 부분을 학습하였다. 저번 강의에서 완성한 `게시판 API 만들기` 카드를 정리하고 Preview를 작성해주었다.그리고 `스프링 부트로 프로젝트 시작하기` 카드의 내용을 작성했다. 오늘부터 본격적인 스프링부트를 사용하여 구현을 시작한다. 개발하기에 앞서 먼저 스프린트 개념을 깃허브 프로젝트에 적용해주었다.스프린트1~3를 생성하고 단계별로 카드를 배치해주었다.스프린트1에는 깃헙 프로젝트와 이슈 정리하기, 깃브랜치 전략 세우기, 유즈 케이스 작성하기, 스프링부트로 프로젝트 시작하기, 도메인 설계, 데이터베이스 접근 로직 테스트 정의, 데이터베이스 접근 로직 구현스프린트2에는 게시판 서비스 뷰 만들기, 게시판 서비스 뷰에 기능 구현..

프로젝트 2023.02.27

7일차

오늘 Part2.게시판 서비스 강의의 `API 설계` 부분을 학습하였다. API 설계하는 내용은 구글 문서 스프레드시트로 작성하였다.API 설계는 endpoints url과 http method와 기능을 문서화하는 것을 말한다. API를 설계하고 이것을 토대로 개발을 진행한다. REST API 설계 원칙URI는 정보의 리소스를 표현해야 한다. 리소스 명은 동사보다는 명사리소스에 대한 행위는 HTTP Method로 표현한다. GET, POST, PUT, DELETE 등슬래시 구분자(/)는 계층 관계를 나타내는데 사용한다.URI 마지막 문자로 슬래시(/)를 포함하지 않는다.하이픈(-)은 URI 가독성을 높이는데 사용할 수 있다.언더바(_)는 URI에 사용하지 않는다. 대신 하이픈(-)을 사용한다.URI 경로..

프로젝트 2023.02.26

6일차

오늘은 Part2.게시판 서비스 강의의 `유즈 케이스 작성하기(2)` 부분을 학습하였다.게시판 서비스 유즈 케이스를 마저 작성하고 깃허브에 올리는 과정을 학습하였다. 강사님께서 깃 커밋 메시지의 중요성에 대해서 설명해주셨다. 깃 커밋 메세지를 잘 써야하는 이유더 좋은 커밋 로그 가독성더 나은 협업과 리뷰 프로세스더 쉬운 코드 유지보수 좋은 깃 커밋 메시지를 작성하기 위한 8가지 약속제목과 본문을 한 줄 띄워 분리하기제목은 영문 기준 50자 이내로제목 첫글자를 대문자로제목 끝에 . 금지제목은 명령조로Github - 제목(이나 본문)에 이슈 번호 붙이기본문은 영문 기준 72자마다 줄 바꾸기본문은 어떻게보다 무엇을, 왜에 맞춰 작성하기 다음으로 feature 브랜치에서 커밋한 내용을 main 브랜치에 pull..

프로젝트 2023.02.25

5일차

오늘은 Part2.게시판 서비스 강의의 `유즈 케이스 작성하기(1)` 부분을 학습하였다. 유즈케이스란?유즈케이스는 시스템 동작을 사용자 입장에서 표현한 시나리오이며, 시스템에 관련한 요구사항을 알아내는 과정이다.유즈케이스를 사용하여 소프트웨어 개발 프로세스 중 소프트웨어의 기능을 개략적으로 설명할 수 있다. 유즈케이의 구성요소scope : 네모난 상자로 표현되며, 시스템이 제공하는 기능의 범위를 나타낸다.useCase : 시스템이 제공해주는 서비스와 기능을 나타낸다. 사용자의 요구사항을 구조화한 것이다.actor : 액터는 구현 대상이 아닌 시스템 외부에서 시스템과 상호작용 하는 존재이다. 무조건 사람일 필요는 없으며, 외부 시스템도 액터로 표현할 수 있다. 액터끼리는 서로 상속되고, 일반화될 수 있다...

프로젝트 2023.02.24