네? 제가요? 8

병원 예약 시스템 Part 3 - 데이터베이스 리팩토링과 API 연동

예약 기능을 완성하고 테스트까지 성공했는데 데이터베이스 구조가 너무 비효율적이라 생각해서 수정을 하기로 결심했다.기존 DOCTOR_SCHEDULE 테이블에는 의사 1명당 5개의 근무 데이터가 필요했다. 하지만 모든 의사의 진료 시간은 평일 9-6, 주말 9-2로 고정되기 때문에 굳이 시간을 DB에 저장할 필요가 없었다.그래서 DOCTOR_SCHEDULE 테이블을 제거하고 병원 운영 시간은 application.yml 설정 파일로 관리하고 의사 휴무일은 DOCTOR 테이블에 day_off 컬럼을 추가하는 방식으로 변경했다.이렇게 하면 의사 1명당 데이터가 1개로 줄어들고 휴무일이 변경 시 dayOff 컬럼만 업데이트하면 돼서 유지보수성도 좋아진다. 결과적으로 중복 데이터는 사라지고 운영 시간 관리는 더 유..

DevLog 2025.12.15

병원 예약 시스템 Part 2 - 예약 비즈니스 로직 구현과 프론트엔드 연동

지난 글에서는 Oracle DB 설계와 JPA 엔티티 매핑을 통해 데이터의 구조 부분을 정리했다. 이번에는 실제 사용자가 예약을 요청했을 때 DB에 저장하고 처리하는 비즈니스 로직과 API를 구현하고 이를 프론트엔드와 연동하는 과정을 정리할 거다. 학원 다닐 때 TypeScript 찍먹해봤는데(사실 찍먹도 아님 그냥 냄새만 맡은 정도임) 이번 기회에 더 공부해보면 좋을 것 같아서 JavaScript 대신 TypeScript 써봄(하지만 굉장히 후회했다죠,.,, 왜냐고요? IntelliJ Community 버전에서는 타입스크립트 지원이 안된다죠,,,, 나는 그냥 아니 편하다며?! 타입스크립트 편하다며!!! 하나도 안편한데 왜 씀?? 이러면서 꾸역꾸역 해냄,,, 어쨌든 해냄) Service 계층컨트롤러..

DevLog 2025.12.09

병원 예약 시스템 Part 1 - 프로젝트 세팅과 기술 선정 이유 (MyBatis vs JPA)

풀스택 개발자 취업 캠프를 수료한지 이제 4개월 차^_ㅠ 취준생 기간이 짧으면 좋겠지만 내 마음대로 되는 건 아니니 이 기간을 좀 알차게 쓰고 싶어서 개인 프로젝트를 진행하기로 마음먹었다. 면접 보러 다니면서 백엔드 쪽이 약하다는 걸 계속 느꼈다. 그래서 이번 프로젝트는 익숙한 MyBatis + JSP 대신 Spring Boot + JPA 로 도전해보기로 했다. 1. MyBatis vs JPA 일단 프로젝트 시작 전에 MyBatis랑 JPA 아키텍처 차이를 비교해봤음(따봉 클로드야 고마워) MyBatis + JSP 구조: Controller ➡ Service ➡ DAO ➡ Mapper.xml (SQL) ➡ DBMyBatis로 팀프로젝트를 진행했을 때 테이블을 수정하면 DTO, SQL 쿼리, DAO를 전..

DevLog 2025.12.08

[TIL] Java Day 01 - IntelliJ 설정 및 자바 기초

수업 과정: 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음시작 날짜: 2025년 10월 1일 - [Day 01 학습 내용] 섹션 1(강의 소개와 자료) - 섹션 2(Hello World)1. IntelliJ IDEA 프로젝트 생성[프로젝트 구조]src/: 소스 코드(.java 파일)를 작성하는 폴더out/: 컴파일된 파일(.class 파일)이 저장되는 폴더.idea/: IntelliJ 설정 파일들[JDK 설정]현재 사용 중인 JDK: OracleOpenJDK 21File > Project Structure 에서 JDK 버전 확인 가능 2. 개발 환경 설정 [상단 툴바 설정]단축키 상단 우클릭 → Main Menu 클릭 [마우스 휠로 폰트 크기 조절 ( Ctrl + 마우스 휠 )]File > Se..

java 2025.10.02

[TIL] Python Day 04 - 논리 연산자, while, input

수업 과정: 노마드 코더(Nomad Coders) - Python으로 웹 스크래퍼 만들기기간: 2025년 9월 29일 - 2025년 10월 13일[Day 04 학습 내용] and, or 논리 연산자, while 반복문, input() 함수, random 모듈 1. input() 함수: 사용자로부터 입력값을 받는 함수오직 하나의 아규먼트만 받음 (입력 안내 메시지)입력받은 값은 항상 문자열(String) 타입age = input("How old are you?") # 문자열로 저장됨age = int(input("How old are you?")) # 숫자로 변환타입 변환int(): 문자열을 정수로 변환type(): 변수의 타입 확인age = int(input("How old are you?"))prin..

python 2025.10.02

[TIL] Python Day 03 - 기본값, return, f-string, 조건문

수업 과정: 노마드 코더(Nomad Coders) - Python으로 웹 스크래퍼 만들기기간: 2025년 9월 29일 - 2025년 10월 13일 [Day 03 학습 내용] 기본 매개변수(Default Parameter), return, f-string(formatted string), if-elif-else 조건문 1. 기본 매개변수 (Default Parameter): 함수 정의 시 파라미터에 기본값을 설정할 수 있음아규먼트를 전달하지 않으면 기본값이 사용됨def say_hello(user_name="홍길동"): print("Hello", user_name)say_hello("kim") # Hello kimsay_hello() # Hello 홍길동 2. return: 함수가 값을 반환(ret..

python 2025.10.02

[TIL] Python Day 02 - 함수, 파라미터, 아규먼트

수업 과정: 노마드 코더(Nomad Coders) - Python으로 웹 스크래퍼 만들기기간: 2025년 9월 29일 - 2025년 10월 13일 [Day 02 학습 내용] 함수(Function) 정의, 파라미터(Parameter), 아규먼트(Argument), 함수의 재사용 1. 함수: 재사용이 가능한 코드 블록한 번 정의하면 몇 번이고 호출하여 사용 가능코드 중복을 줄이고 유지보수를 쉽게 만듦 2. 함수 정의: def 키워드로 함수 정의함수 이름 뒤에 () 추가콜론(:) 후 들여쓰기로 함수 본문 작성def say_hello(): print("hello how r u?")say_hello() 3. 파라미터 (Parameter): 함수 정의 시 괄호 안에 선언하는 변수(형식 매개변수)함수 안으로 데이터..

python 2025.10.02

[TIL] Python Day 01 - 변수, 자료형, 불리언

수업 과정: 노마드 코더(Nomad Coders) - Python으로 웹 스크래퍼 만들기기간: 2025년 9월 29일 - 2025년 10월 13일 [Day 01 학습 내용] Python의 변수, 자료형, 불리언(Boolean), 코드 실행 순서 1. 출력: print() 함수를 사용하여 문자열이나 변수를 출력print("Hello world") 2. 변수(Variable): = 기호를 사용하여 값 저장age = 18name = "hong"# 파이썬에서는 세미콜론(;) 사용x → 줄바꿈 자체가 문장의 끝을 의미함 변수 이름 규칙알파벳, 숫자, 언더스코어(_)만 사용 가능공백x, 숫자로 시작x 3. 코드 실행 순서: 위에서 아래(Top to Bottom)변수를 선언하기 전에 사용하면 오류 발생 4...

python 2025.10.02