🚧

· 🚧
코드 컨벤션은 읽기 용이하고 관리하기 쉽게 규정한 일관된 코드 스타일이다 깐깐한 규칙을 하나하나 따르다보면 오히려 시간을 더 잡아먹을 수도 있지만, 코드 가독성이 높아져 이후 읽기에도 편하고 특히 다른 개발자와 의사소통이 훨씬 수월해진다는 장점을 가진다. 이번에 새로운 사이드 프로젝트를 시작하기 전 코드 컨벤션을 정하고 가기로 했다. 유명한 구글의 자바 코드 컨벤션을 따를 생각이다. 구글에서 xml 파일을 제공해주고 있어 IDE 에 설정해두면 코드 정렬 단축키로 편하게 적용할 수 있다. 구글 코드 컨벤션 IDE에 적용하는 방법 구글 깃허브에서 자신이 사용하는 언어와 IDE 환경에 맞는 파일을 다운받는다. 나는 Java 와 IntelliJ 조합으로 intellij-java-google-style.xml 파..
· 🚧
Git 브랜치 전략이란 브랜치 전략이란 여러 명의 협업자가 Git의 브랜치를 사용해 하나의 공동 저장소를 효율적으로 사용하기 위한 전략이다. 브랜치 전략을 세우지 않고 개발하면 체계 없는 브랜치 생성과 병합 중구난방 흩어진 이슈와 커밋 그에 따른 협업의 어려움 의 문제가 발생할 수 있다. 대표적인 브랜치 전략들인 Git Flow 와 Github Flow 를 살펴보고자 한다. Git Flow Git Flow 는 브랜치를 크게 5가지 목적으로 나누어 개발한다. master 최종으로 배포되는 브랜치. 배포 후 버전 태그(v1.0, v1.1 등) 를 추가한다. release 배포하기 전 QA를 진행하는 브랜치. develop 브랜치에서 생성되고 QA에 통과하면 master 브랜치에 머지한다. 수정 사항이 있다면..
· 🚧
Concurrency Control, 병행제어 임계영역이란? 임계영역이란 프로세스가 공유자원에 동시에 접근하지 못하도록 한번에 하나의 프로세스만 이용하게끔 해주는 영역이다. 임계영역 보장 조건 임계영역을 보장해주기 위해서는 3가지 조건을 충족해야 한다. 1) Mutual exclution 하나의 프로세스가 임계영역에 진입시 다른 프로세스는 진입 불가 2) Progress 임계영역에 아무 프로세스가 없는 상태에서 들어가려는 프로세스가 여러개라면 어떤 프로세스가 먼저 들어갈지 결정해줘야 함. 3) Bounded waiting 다른 프로세스의 starvation 을 방지하기 위해 한번 임계영역에 들어간 프로세스는 다음번에 들어갈 때 제한을 둬야 함. Concurrency Control, 병행 제어 or 프로세..
· 🚧
등록/조회/수정 API 만들기 각 코드 상세 설명은 주석으로 달았다. 또 Entity 클래스와 Repository 클래스는 👉 Spring boot 에 Spring Data JPA 적용하기 에서 작성했다. DTO 만들기 DTO는 데이터를 View Layer 와 주고받을 때(request, response) 감싸는 객체이다. 외부에 노출되는 객체이므로 안에 비즈니스 로직을 담지 않는다. 여기서는 Entity 와 유사하나, 이렇게 View 와 주고받는 데이터들은 자주 수정이 일어난다. Entity 는 DB와 밀접한 객체고 비즈니스 로직도 담고 있으므로 자주 수정하게 되면 관련된 여러 클래스들에 영향을 끼치기 때문에 Entity 를 dto 용도로 쓰지 않는다. 즉, Entity 클래스와 Controller 에..
· 🚧
프로젝트에 Spring Data JPA 적용하기 build.gradle 수정 Spring Data JPA 와 H2 를 사용하기 위해 아래처럼 build.gradle 파일을 수정한다. Spring Data JPA 가 무엇이고 SQL Mapper와는 어떻게 다른지 궁금하다면... 👉 SQL Mapper vs ORM (feat. Hibernate vs Spring Data JPA) H2는 인메모리 RDBMS로 Spring boot 에 내장되어 있다. 별도의 설치가 필요 없고 메모리에서 실행되므로 애플리케이션 실행 시 초기화돼서 테스트 용도로 자주 쓰이는 DB 이다. 수정해주고 gradle 반영 버튼을 꼭 누르자. dependencies { ... implementation 'org.springframework..
· 🚧
Persistence Framework 프로그램이 종료되어도 사라지면 안되는 데이터들이 있다. 이런 데이터들을 우리는 DB에 저장한다. 이렇게 데이터가 생성되고 프로그램이 종료되어도 사라지지 않는 성질을 영속성(Persistence)라고 한다. Java 에서는 데이터의 영속성을 위해, 즉 DB 작업을 할 수 있게 해주는 JDBC(Java Database Connectivity) 프레임워크를 지원해주고 있다. JDBC를 사용하는 방법은 꽤 번거롭다. DB에 접근해 Connection을 얻고, SQL 를 수행해 얻은 결과값을 Java Object Type 에 맞게 변환(Mapping) 하는 작업을 개발자들이 하나하나 해야 한다. 이런 번거로운 JDBC 작업을 대신 해주는 것이 바로 SQL Mapper 와 O..
· 🚧
Application 코드 작성하기 Application 클래스는 springboot 프로젝트의 메인 클래스가 된다. src/main/java 에 com.study.springbootaws 패키지를 생성한다. 패키지명은 보통 회사 도메인의 역순으로 만든다. 그 아래에 Application class 를 생성하고 아래처럼 내용을 작성한다. src/main/java/com.study.springbootaws/Application package com.study.springbootaws; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; //프로젝..
· 🚧
JUnit 테스트 중에 아래처럼 오류가 났다. error: variable name not initialized in the default constructor private final String name; 이유는 gradle 버전이 5로 올라가면서 lombok 을 프로젝트에 추가하는 방법이 달라졌기 때문이다. 아래처럼 수정해주면 해결된다. dependencies { ... //gradle 이 버전 4 라면 implementation 'org.projectlombok:lombok' //gradle 이 버전 5 라면 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' ... }
purpplee
'🚧' 카테고리의 글 목록