Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- OPENPATH
- 디자인챌린지
- 국비지원교육
- 부트캠프
- 백엔드 부트캠프
- 디자인강의
- 디자인교육
- mysql
- 내일배움카드
- 내일배움캠프
- 패스트캠퍼스
- 백준
- 오픈챌린지
- 백엔드
- Java
- Be
- baekjoon
- 티스토리챌린지
- 오픈패스
- 객체지향
- UXUIPrimary
- 백엔드개발자
- 오블완
- UXUI기초정복
- Spring
- 국비지원취업
- KDT
- 환급챌린지
- 국비지원
- UXUI챌린지
Archives
- Today
- Total
군만두의 IT 공부 일지
[Java] 패스트캠퍼스 백엔드 개발 부트캠프 8기 토이 프로젝트 1 DAY4 본문
목차
📅진행기간: 2024년 4월 1일 ~ 2024년 4월 5일
CRUD 기능 구현
⭐요약
- 3일차에는 예외 처리 로직을 구현하고, 리팩토링 및 발표회 준비에 대해 생각함.
- 4일차에는 TripJsonManager의 여행 json 파일 수정, 삭제 기능을 구현하고 싱글톤 패턴을 적용함.
⭐CRUD 기능
여행 데이터의 CRUD (Create, Read, Update, Delete) 기능을 구현하기로 함. json 파일의 생성과 읽기 기능은 구현했기 때문에, 수정과 삭제 기능을 어떻게 구현했는지 정리함. 구현해야 할 기능은 다음과 같음.
- 여행 정보 수정: 기존의 여행 정보를 수정함.
- 여행 정보 삭제: 선택한 여행 정보를 삭제함.
1. 여행 정보 수정(Update)
특정 ID를 가진 여행 정보를 찾아 사용자가 원하는 대로 데이터를 수정할 수 있음.
public boolean updateTrip(Trip updatedTrip) throws FileIOException {
List<Trip> trips = readTripTable();
boolean updateFlag = false;
for (int i = 0; i < trips.size(); i++) {
if (trips.get(i).getTripId() == updatedTrip.getTripId()) {
trips.set(i, updatedTrip);
updateFlag = true;
break;
}
}
if (!updateFlag) {
throw new FileIOException("수정할 여행 ID가 존재하지 않습니다.");
}
boolean rewriteTableSuccess = rewriteTripTable(trips);
if (!rewriteTableSuccess) {
return false;
}
return updateTripIdFile(updatedTrip);
}
2. 여행 정보 삭제(Delete)
사용자가 지정한 ID의 여행 정보를 찾아 JSON 파일에서 삭제함.
public boolean deleteTrip(int tripId) throws FileIOException {
List<Trip> trips = readTripTable();
trips.removeIf(trip -> trip.getTripId() == tripId);
if (trips.size() == originalSize) {
throw new FileIOException("삭제할 여행 ID가 존재하지 않습니다.");
}
boolean rewriteSuccess = rewriteTripTable(trips);
if (!rewriteSuccess) {
return false;
}
return deleteTripIdFile(tripId);
}
이 기능을 추가하면, 사용자는 여행 정보를 효율적으로 관리할 수 있음. 여행 정보 수정과 삭제 기능에서도 날짜 관련 데이터 처리에서의 예외 상황 처리, 파일 입출력 시 발생하는 예외 처리를 구현함.
⭐싱글톤 패턴 적용
TripJsonManager 클래스를 통해 json 파일을 관리하는데, 이 클래스는 싱글톤 패턴을 이용하여 인스턴스가 한 번만 생성되도록 구현됨.
private static TripJsonManager instance;
private TripJsonManager() {}
private static class SingletonHelper {
private static final TripJsonManager INSTANCE = new TripJsonManager();
}
public static TripJsonManager getInstance() {
return SingletonHelper.INSTANCE;
}
현재까지 디렉토리 구조는 다음과 같음. 남은 시간 동안 리팩토링 및 발표 준비를 마무리할 예정임.
📦src
┣ 📂exception
┃ ┣ 📜DuplicateDateException.java
┃ ┣ 📜DuplicateTripNameException.java
┃ ┣ 📜FileIOException.java
┃ ┣ 📜InputEmptyException.java
┃ ┣ 📜InputEndException.java
┃ ┗ 📜InvalidDateOrderException.java
┣ 📂imp
┃ ┣ 📜Controller.java
┃ ┣ 📜ItineraryJsonManager.java
┃ ┗ 📜TripJsonManager.java
┣ 📂Itinerary
┃ ┣ 📜Itinerary.java
┃ ┗ 📜ItineraryController.java
┣ 📂resources
┃ ┣ 📜1.json
┃ ┗ 📜TripTable.json
┣ 📂Trip
┃ ┣ 📜Trip.java
┃ ┗ 📜TripController.java
┣ 📂util
┃ ┣ 📜Message.java
┃ ┗ 📜Util.java
┣ 📂view
┃ ┣ 📜ItineraryView.java
┃ ┣ 📜MainView.java
┃ ┣ 📜TripView.java
┃ ┗ 📜View.java
┣ 📜Main.java
┣ 📜MainController.java
┗ 📜TripApplication.java
⭐후기
- 이제 거의 마무리 단계임. 필요한 내용은 다 구현했지만, MVC 패턴 적용이나 코드 리팩토링에 있어서는 부족한 부분이 많다고 생각함.
- 발표자료를 다 준비하지 못했기 때문에 내일 발표회 전까지 마무리지어야 함. 이러한 토이 프로젝트 과제가 주어졌을 때, 다른 팀과의 차별성을 두려면 어떻게 해야 할지 정하는 것이 어려운 것 같음.
이 글은 패스트캠퍼스의 백엔드 개발 캠프에서 공부한 내용을 작성한 것입니다.
'개발일지 > 패스트캠퍼스' 카테고리의 다른 글
[Java] JSON 라이브러리 사용 방법 및 성능 비교 (0) | 2024.04.07 |
---|---|
[Java] 패스트캠퍼스 백엔드 개발 부트캠프 8기 토이 프로젝트 1 DAY5 (0) | 2024.04.05 |
[Java] 패스트캠퍼스 백엔드 개발 부트캠프 8기 토이 프로젝트 1 DAY3 (0) | 2024.04.04 |
[Java] 패스트캠퍼스 백엔드 개발 부트캠프 8기 토이 프로젝트 1 DAY2 (0) | 2024.04.03 |
[Java] 패스트캠퍼스 백엔드 개발 부트캠프 8기 토이 프로젝트 1 DAY1 (0) | 2024.04.01 |
Comments