개인과제(54)
-
[내일배움캠프] 일정 관리 앱 - DB 연동 및 API 테스트
다행이(?) JDBC 를 적용한 개발이 잘 풀려 '일정 생성(CRUD 中 - create)' 에 대한 구현을 마칠 수 있었다. 그래서 이전에 못한 Spring 과 DB 의 연결이 잘 되었는지 확인할 수 있었는데, 이번 게시글에는 어떻게 DB 를 Spring 과 연동했고 구현한 ' 일정 생성' 기능이 어떻게 동작되는지 작성할 생각이다. 이번에 작성된 프로젝트 내용은 여기서 확인 할 수 있다. 1. application.properties# MySQL 설정spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# DB Source URLspring.datasource.url=jdbc:mysql://localhost:3306/schedule_managemen..
2024.09.27 -
[내일배움캠프] 일정 관리 앱 - DB 세팅
어제 미리 세팅해둔 '일정 관리 앱(Schedule Management)' 프로젝트에 사용될 'DB(데이터베이스, 스키마)' 와 'Table(테이블)' 을 생성해 보자! 0. ERD 'Lv.1 ~ 3' 에 해당 하는 요구사항을 반영했을 때 필요로하는 DB Table 에 대한 'ERD(Entity Relationship Diagram, 객체 관계도)' 를 아래와 같이 작성해 두었다. 1. DB(= schema) 생성 평소에는 'MySQL Workbench' 를 통해서 DB(schema) 만을 생성해두고 Spring Data JPA 를 통해 Entity 에 해당하는 테이블을 생성했었다. 하지만 이번 과제는 'JDBC' 를 사용해야 하기에 DB 연결전에 DB 와 Table 을 모두 미리 생성해두기로 하였고,..
2024.09.27 -
[내일배움캠프] 숫자 야구 게임 구현 - 리팩토링(3)
Level04 요구사항까지 구현을 하고 리팩토링을 진행했다. 이번 리팩토링에서는 기본적으로 변수명 또는 메서드명을 수정하고 주석 추가작성 및 수정을 진행하였다. 그 밖의 수정 내용은 아래에 작성했으며, 수정된 코드는 여기서 확인할 수 있다. 1. Scanner in NumbersBaseballApp 'Main.main()' 메서드는 'Scanner' 및 'NumbersBaseballApp' 객체를 생성해 'NumbersBaseballApp.start(Scanner)' 메서드를 호출한다. 하지만 사실 'main()' 메서드에서 'Sacnner' 객체를 파라미터로 넘기는 것 외에 사용할 일이 없다. 그래서 'NumbersBaseballApp' 객체에서 'Scanner' 객체를 생성하도록 아래와 같이 수정하였..
2024.09.23 -
[내일배움캠프] 숫자 야구 게임 구현 - 리팩토링(2)
어제 Level03 요구사항을 반영하기 위해 작성한(커밋은 오늘 했지만...) 코드를 다시 한 번 확인하고 리팩토링 해보았다. 수정한 코드는 여기서 확인 가능한다. 1. 패키지명 수정 현재 패키지 구성을 다시 확인하면서 일부 패키지의 이름이 의도를 명확히 전달하지 못하는 것 같아 수정하였다. 아래는 수정 전의 패키지 상태이다. 패키지명을 왜 수정하게 됬는지 설명하기 앞서 현재 패키지 구성에 대해 설명하자면, 현재의 패키지는 'package' 경로를 통해 해당 클래스(또는 인터페이스)가 어떤 목적으로 작성된 것인지 유추할 수 있도록 구성되었다. 예를 들어 이번에 추가한 'GameRecorder' 인터페이스의 패키지 경로는 아래와 같다.package numberBaseball.domain.playRecord..
2024.09.21 -
[내일배움캠프] 계산기 구현 - 피드백 반영(3)
세 번째 피드백은 '0' 으로 피연산자를 나누는 연산에 대한 예외 처리와 '명확한 예외 처리' 에 대한 내용이었으며, 피드백을 반영한 코드는 여기서 확인할 수 있다. 1. 명확한 예외 처리 연산(입력 값)에 대한 유효성을 확인하는 'checkValidCalculation(String)' 메서드이다. 만약 유효하지 않다면 'BadInputException' 이 발생, 예외의 처리 책임은 메서드를 호출한 곳으로 넘긴다. 그래서 아래의 이미치처럼 발생한 예외를 'Level04.start()' 메서드에서 처리하도록 구현했다. 문제의 구현부인데, 'InputValidator.checkValidCalculation()' 에서 발생한 예외를 'catch' 를 통해 잘 처리한 듯 보이지만 'catch' 에 지정된 예외..
2024.09.18 -
[내일배움캠프] 계산기 구현 - 피드백 반영(2)
두 번째 피드백은 '불필요한 연산 객체 (반복)생성' 에 관한 내용이었다. 확실히 나의 불찰로 생긴 문제였기에 피드백을 적극 반영해 문제를 해결해 보았다. 피드백을 반영한 코드는 여기서 확인할 수 있다. 1. Level.02 계산기 피드백 내용을 정리하면 '불필요한 연산 객체' 를 계속 생성하는 것과 'Calculator' 클래스의 역할이 '입력 값을 연산' 하는 역할임에도 'Operation 인터페이스' 의 구현 클래스 객체를 매핑하는 역할도 수행하고 있다는 문제가 존재한다.1-1. 문제 파악 현재 Level02 계산기는 'Level02.start()' 메서드의 내부 로직이 반복되는 구조로 'Level02' 객체 생성시 'Calculator' 객체를 한 번 생성한 뒤 'start()' 메서드가 수행되..
2024.09.18