inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 1기] BE 3주차 발자국

이용수
0

[인프런 워밍업 클럽 1기] BE 3주차 발자국

서론

벌써 강의를 들은지 3주차가 지나간다. 강의와 스터디를 하면서 배운 내용을 잊지 않도록 주마다 블로그에 정리하려고 한다.

섹션 5 : 책 요구사항 구현하기

조금 더 객체지향적으로 개발할 수 없을까?

JPA 연관관계에 대한 추가적인 기능들

@Transactionnal
public void savePerson(){
  Person person = personRepository.save(new Person());
  Address address = addressRepository.save(new Address());
  person.setAddress(address);
  System.out.println(address.getPerson()); // null이 됨.
}
@Transactionnal
public void savePerson(){
  Person person = personRepository.save(new Person());
  Address address = addressRepository.save(new Address());
  person.setAddress(address);
  address.getPerson();
}
...
public void setAddress(Address address){
  this.address = address;
  this.address.setPerson(this);
}
...
public Person getPerson(){
  return this.person;
}

책 대출/반납 기능 리팩토링과 지연 로딩

    public void loanBook(String bookName){
        this.userLoanHistories.add(new UserLoanHistory(this, bookName));
    }
    public void returnBook(String bookName){
        UserLoanHistory targetHistory = this.userLoanHistories.stream()
                .filter(history -> history.getBookName().equals(bookName))
                .findFirst()
                .orElseThrow(IllegalArgumentException::new);
        targetHistory.doReturn();
    }
    @Transactional
    public void returnBook(BookReturnRequest request){
        // 유저 정보를 가져온다
        User user = userRepository.findByName(request.getUserName())
                .orElseThrow(IllegalArgumentException::new);
        System.out.println("Hello");
        user.returnBook(request.getBookName());
    }

Section 5 정리.

섹션 6 : 생애 최초 배포 준비하기

배포란 무엇인가?

profile과 H2 DB

spring:
  config:
    activate:
      on-profile: local
  datasource:
    url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER"
    username: "sa"
    password: //패스워드
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.H2Dialect
  h2:
    console:
      enabled: true
      path: /h2-console
---
spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: "jdbc:mysql://localhost/library"
    username: "root"
    password: //패스 워드
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect

imageH2-Console로 로컬에서 링크에 접속하면

image로컬에서 데이터베이스를 확인할 수 있다.

git과 github이란 무엇인가?

git 기초 사용법

AWS의 EC2 사용하기

Section 6 정리.

섹션 7 : 생애 최초 배포하기

EC2에 접속해 리눅스 명령어 다뤄보기

배포를 위한 프로그램 설치하기

sudo yum update
sudo yum install git -y
ALTER user'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "패스워드";

빌드와 실행, 그리고 접속

종료되지 않는 실행

가비아를 이용한 도메인 구입, DNS 적용

Section 7 정리.

섹션 8 : Spring Boot의 이모저모

build.gradle 이해하기

Spring과 Spring Boot

application.yml과 application.properties, lombok

Spring Boot 2.7.x에서 3.0.x로 업데이트하기

3주차 과제

과제 6번 : https://www.inflearn.com/blogs/7993

과제 7번 : https://www.inflearn.com/blogs/8017

3주차 후기

지난주 2주차 회고록에 이어서 인프런 워밍업 클럽 과정의 3주차가 마무리됬다. 이번 주차에서는 섹션 5의 일부분 부터 섹션 8까지 강의를 수강할 수 있었다. 간단하게 각 섹션 별로 강의의 주제를 다시 한번 상기하고 어떤걸 배우고 느꼈는지 확인해보려고 한다.

섹션 5의 주제 : 책 요구사항 구현하기

객체지향적으로 설계하기 위한 연관관계를 이해하고, 연관관계의 다양한 옵션에 대해 이해했다. 또한 JPA에서 연관관계를 매핑하기 위한 방법을 이해하고, 연관관계를 사용해 개발할 때와 사용하지 않고 개발할 때의 차이점을 이해했다.

섹션 6의 주제 : 생애 최초 배포 준비하기

배포가 무엇인지 이해하고, 배포를 하기 위해 어떤 준비를 해야하는지 알아 봤으며 스프링 서버를 실행할 때 DB와 같은 설정들을 코드 변경 없이 제어할 수 있는 방법을 알아볼 수 있었다. 또한 git과 github의 차이를 이해하고 git에 대한 기초적인 사용법을 알아보고, AWS의 EC2가 무엇인지 이해하고, AWS를 통해 클라우드 컴퓨터를 빌려볼 수 있었다.

섹션 7의 주제 : 생애 최초 배포하기

EC2에 접속하는 방법을 알아보고, EC2에 접속해 리눅스 명령어를 다뤄봤다. 개발한 서버의 배포를 위해 환경 설정을 리눅스에서 진행하고, 실제 배포를 진행해볼 수 있었다. foreground와 background의 차이를 이해하고 background 서버를 제어해보고, 도메인 이름을 사용해 사용자가 IP대신 이름으로 접속할 수 있도록 했다.

섹션 8의 주제 : Spring Boot의 이모저모

그동안 진행해온 Spring Boot의 build.gradle과 application.yml 등 다양한 설정 파일의 내부를 확인해볼 수 있었다.

2차 중간 점검

2차 중간 점검은 질의 응답보단 코드 리뷰를 진행하는 형식으로 진행됬다. 본인은 아직 미니 프로젝트 1번까지 수행하지 못해 직접 피드백을 받지는 못했지만, 고맙게도 올려주신 분들의 코드의 매커니즘 대체로 깔끔해서 작성한 내 코드와 비교해보며 간접적으로 좋은 피드백을 받을 수 있었다.

마무리

이번 주차는 대체적으로 개발한 코드를 리팩토링 하고 배포하는 부분이 많았다. 특히, 배포하는 부분을 주요 깊게 봤다.

처음으로 AWS 계정을 생성해서 배포하는 과정까지 천천히 진행해봤는데, 확실히 금전적으로 사고가 일어날 수 있는 부분이다 보니 강의 자료 외에도 더 알아보고 신중하게 진행했다.

이제 미니 프로젝트만 마무리 지으면 벌써 워밍업 클럽의 수료가 눈앞에 다가온다.

다음 주차엔 남은 강의도 얼마 없어서 미니 프로젝트에 신경을 많이 쓰게 될것 같다.

백엔드 백엔드 인프런 워밍업

답변 0