[멋쟁이사자처럼부트캠프] 클라우드 엔지니어링 6기 Architecture&JDBC
오늘 자 레이어를 나누어 실무에서 주로 사용하는 구조로 JDBC를 이용한 DB CRUD 실습을 한 것 같다. 아직 SQL 문법과 자바의 상속 개념 등 헷갈리는 부분이 너무 많아서 더 살펴봐야 할거 같다. 일단 워크샵에서 DTO를 작성하던 중,

absYn(휴학 여부) 필드의 타입을 혼자서만 char 타입으로 선언
데이터 베이스 컬럼 값이 문자이기에 맞다고 생각하고 코드를 짜던중 타입 오류가 발생해서 생각해 보니 DB에서 가져온 값은 문자열로 반환되는데 이 친구를 어떻게 쪼개서 넣을까 생각해 보다가 모르겠어서 제미나이한테 물어보니,
// DB에서 문자열(String) 형태로 값을 가져옴
String absStatus = rs.getString("휴학여부");
// 문자열의 첫 번째 문자만 추출하여 char 타입 변수에 저장
char absYn = absStatus.charAt(0);
타입 변환 방법을 잘 알려줘서 잘 해결했는데 답안지 보니 시원하게 String 선언 처리 하셨습니다..
그리고 학생 이름 검색 기능을 구현하던 중, 문자를 입력하려고 하는데 콘솔에서 입력을 받지 않고 그냥 넘어가버리는 현상이 발생하길래 콘솔창을 봤는데 오류 메시지도 없어서
무식하게
System.out.println("test");남발해봤다. 결론은 아무것도 안뜬다.(아직 구조에 대해 이해도가 부족하다.) 암튼 다시 한번 제미나이에게 물어봤더니 원인은 Scanner의 동작 원리와 버퍼(Buffer)에 남은 찌꺼기 때문이라고 한다.
| 동작 단계 | 입력값 (버퍼 상태) | 메서드의 행동 | 남겨진 찌꺼기 |
|---|---|---|---|
| 1. 키보드 입력 | 2 + \n (엔터) | (대기 중) | 2\n |
2. nextInt() 실행 | 2\n | "오직 숫자만 가져가겠소!" (2만 쏙 빼감) | \n (엔터키 남음) |
3. nextLine() 실행 | \n | "엔터가 나올 때까지 읽겠소!" (어? 바로 있네?) | (비어있음, 입력 스킵됨) |
\n이 남아있어서 입력을 지나친다고.. 결론은 nextLine()을 의미 없이 한 번 더 호출해서 초기화 하거나, 아예 공백을 기준으로 단어를 읽는 next()를 사용하는 방법도 있다네 그래서 이렇게 오늘 공부한 내용 중 계층형 아키텍처(Layered Architecture)에 대해 자세히 정리해 봅시다.
계층형 아키텍처 패턴 (Layered Architecture Pattern)
개념
시스템을 독립적인 수평적 계층으로 분리하여, 각 계층이 특정 역할과 책임에만 집중하도록 하는 설계 방식입니다. 흔히 N-Tier 아키텍처라고도 불립니다.
계층 구조
- Presentation Layer : 사용자 인터페이스(UI)와 사용자의 상호작용을 처리합니다. (예: 웹페이지 화면, 모바일 UI)
- Service Layer : 애플리케이션의 비즈니스 규칙과 워크플로우를 처리하고 연산합니다.Persistence Layer : 데이터베이스와의 상호작용, 쿼리 실행, 데이터 저장 및 검색을 관리합니다. (예: DAO 패턴),
- Database Layer : 정보가 실제로 저장되는 스토리지 시스템입니다. (예: MySQL 등),
특징
- 관심사의 분리 : 각 계층은 자신의 고유한 역할에만 집중합니다.
- 격리와 느슨한 결합 : 한 계층의 변경이 다른 계층으로 파급되지 않도록 종속성을 최소화합니다.
- 표준화된 통신: 계층 간에는 잘 정의된 인터페이스나 계약(API, DAO 등)을 통해서만 소통합니다.
장점과 단점
| 구분 | 주요 내용 |
|---|---|
| 장점 | • 유지보수: 역할 분리로 버그 수정 용이 • 테스트: 계층별 독립적 단위 테스트 가능 • 재사용: 핵심 로직 타 프로젝트 활용 가능 |
| 단점 | • 성능: 단순 조회도 모든 계층 거침 (싱크홀 패턴) • 확장성: 특정 계층 병목이 전체 비효율 초래 |