전체 글 138

Spring MVC - JDBC 기반 데이터 액세스 계층

1.Spring Data JDBC 1-1.JDBC(Java Database Connectivity) -JDBC는 Java 애플리케이션에서 데이터베이스에 액세스하기 위해 Java 초창기(JDK 1.1) 버전부터 제공되는 표준 사양(Specification) -Java개발자는 JDBC API를 사용해서 다양한 벤더(Oracle, MS SQL, MySQL 등)의 데이터베이스와 연동할 수 있음 -JDBC의 동작 흐름 ● Java 애플리케이션에서 JDBC API를 이용해 적절한 데이터베이스 드라이버를 로딩 한 후, 데이터베이스와 인터랙션 *JDBC 드라이버(JDBC Driver) : 데이터베이스와의 통신을 담당하는 인터페이스로 Oracle이나 MS SQL, MySQL 같은 다양한 벤더에서는 해당 벤더에 맞는 JD..

부트캠프 2023.02.20

Spring MVC - 예외 처리

1.Spring MVC에서의 예외 처리 -기본 용어 (1)예외(Exception) : 프로그램 실행 중 발생할 수 있는 오류나 문제 ● 파일을 찾을 수 없는 경우 ● 메모리 부족으로 인한 오류 ● 형식이 잘못된 입력값 (2)예외 처리(Exception handling) : 예외 상황에 대처하기 위한 프로그래밍 기법으로, 대개 예외가 발생했을 때 이를 알리고 적절한 조치를 취하는 것으로 이루어짐 (3)예외 던지기(throw) : 예외가 발생한 것을 다른 코드에 알리는 것. ● 예외를 던지면 현재 실행 중인 메서드는 즉시 중단되고, 호출 스택(Call Stack)에서 예외를 처리할 수 있는 다른 메서드를 찾음 ● 예외가 발생한 지점에서 예외를 처리할 수 없는 경우, 호출된 상위 메서드로 예외를 전달하며, 최..

부트캠프 2023.02.17

Spring MVC - Service 계층

1.서비스 계층 1-1.DI를 통한 서비스 계층과 API 계층 연동 -API 계층에서 구현한 Controller 클래스가 서비스 계층의 Service 클래스와 메서드 호출을 통해 상호 작용한다는 것을 의미 -Service의 의미 (1)애플리케이션에 있어 Service는 도메인 업무 영역을 구현하는 비즈니스 로직을 처리하는 것을 의미 (2)서비스 계층은 대부분 도메인 모델을 포함하고 있으며, 도메인 모델은 빈약한 도메인 모델(anemic domain model)과 풍부한 도메인 모델(rich domain model)로 구분됨 -도메인 엔티티(Entity) 클래스 : API 계층에서 전달 받은 요청 데이터를 기반으로 서비스 계층에서 비즈니스 로직을 처리하기 위해 필요한 데이터를 전달 받고, 비즈니스 로직을 ..

부트캠프 2023.02.17

스프링 입문 '섹션 6-1' 부터 '섹션 6-2' 까지

오늘은 h2 데이터베이스를 설치 및 연결 후 기초적인 member 테이블을 생성해봤다. 처음 h2 데이터베이스를 설치할 때 이와 같은 오류가 뜨고, url 앞 부분을 localhost로 변경해도 같은 오류가 떠서 재설치를 여러번 했지만 그래도 똑같기에 컴퓨터를 재부팅 후 재설치 및 실행해보니 정상적으로 설치할 수 있었다.(이거 하느라 거의 30분을 날렸다....) 옛날옛날 개발자 선배들이 구현했다는 방식인 JDBC API 코딩도 구경했고, SQL문법도 조금 써먹어봤다(select * 정도지만) 마지막은 영한님의 멘트로 마무리하겠다. "스프링의 DI (Dependencies Injection)을 사용하면 기존 코드를 전혀 손대지 않고, 설정만으로 구현 클래스를 변경할 수 있습니다. 객체지향의 진짜 매력은 ..

Solo Project - Book Search Application

안내 사항 KJS는 hunm719가 운영하는 가상의 서점입니다. KJS에서는 서점 내의 모든 도서를 관리하고 고객들이 검색할 수 있도록 Book Search Application을 만들려고 합니다. 기능 요구 사항 1. 도서 관리 도서 추가 기능 도서 삭제 기능 2. 도서 검색 도서 검색 기능 ※지속적으로 업데이트 할 예정입니다. 23.02.14. 안내 사항, 기능 요구 사항(1. 도서 관리 및 2. 도서 검색) 작성 23.02.20. H2 데이터베이스를 통해 DB 연동하기

Spring MVC - API 계층 part 2

1.DTO(Data Transfer Object) -마틴 파울러(Martin Fowler)가 소개한 엔터프라이즈 애플리케이션 아키텍처 패턴의 하나 -클라이언트에서 서버 쪽으로 전송하는 요청 데이터를 전달 받을 때, 서버에서 클라이언트 쪽으로 전송하는 응답 데이터를 전송하기 위한 용도로 사용 -DTO가 필요한 이유 (1)클라이언트의 Request Body를 하나의 객체로 모두 전달 받을 수 있기때문에 코드 자체가 간결해짐 (2)Request Body의 데이터 유효성(Validation) 검증이 단순해Request Body의 데이터 유효성(Validation) 검증이 단순해짐 -DTO 클래스 적용을 위한 코드 리팩토링 절차 (1)정보를 전달 받을 DTO 클래스를 생성 *전달 받는 각 데이터 항목들을 DTO ..

부트캠프 2023.02.14

Spring MVC - API계층 part 1

1.Spring MVC Architecture -Spring MVC : 클라이언트의 요청을 편리하게 처리해주는 프레임워크 1-1.Model -클라이언트의 요청 사항을 처리하기 위한 작업의 처리 결과 데이터 *클라이언트의 요청 사항을 구체적으로 처리하는 영역을 서비스 계층(Service Layer)하며, 실제로 요청 사항을 처리하기 위해 Java 코드로 구현한 것은 비즈니스 로직(Business Logic)이라 함. 1-2.View -Model 데이터를 이용해서 웹브라우저 같은 클라이언트 애플리케이션의 화면에 보여지는 리소스(Resource)를 제공하는 역할 -Spring MVC에 포함된 다양한 View 기술 (1)HTML 페이지의 출력 (2)PDF, Excel 등의 문서 형태로 출력 (3)XML, JSO..

부트캠프 2023.02.13

스프링 입문 '섹션 4' 부터 '섹션 5' 까지

회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있도록 의존관계를 추가해주었다 스프링 빈을 등록하는 2가지 방법을 배웠는데 1.ComponentScan과 자동 의존관계 설정 ->@Component 라는 annotation이 있으면 스프링 빈으로 자동 등록된다 ->@Component를 자체적으로 포함하는 아래의 annotation들도 스프링 빈에 자동 등록된다 (@Controller, @Service, @Repository) 2.자바 코드로 직접 스프링 빈 등록하기 ->등록할 클래스에 @Configuration 삽입 ->스프링 빈으로 등록할 객체에 @Bean 삽입 +DI에는 필드 주입, setter 주입, 생성자 주입 3가지 방법이 있다. 의존관계가 실행중에 동적으로 변하는 경우는 거의 없으므로 ..

회고 블로깅(백엔드 부트캠프 2달차)

벌써 부트캠프를 시작한지 2달이 지났다. 원래는 일요일만큼은 늦게까지 잤었지만 이제는 아침 5시에 하루를 시작하는 게 익숙해져서 그런지 일요일도 5시에 하루를 시작하게 됐다. 그리고 스터디에 참가하게 돼서 주 4회 이상, 1회당 2시간 이상을 추가로 공부하도록 습관이 잡혔다. 스프링을 배우기 시작하고부터 인프런 강의도 결제해서 스프링을 최대한 이해하려고 노력하고 있다. 뒤돌아보니 정말 눈 깜짝할 새도 없이 지나갔는데, 부족한 부분도 있지만 노력한 것도 있으니 오늘도 나에게 지금처럼만 해오자고 말해주고 싶다. 목표 상기하기 부트캠프 수료 후 2개월 안에 개발자로 커리어 전환에 성공하기!! Keep 1.아침 5시 기상 후 운동 2.수업내용은 당일에 요약 및 정리 후 블로깅 3.1회 2시간 이상, 주 4회 이..

잡담 2023.02.10

Spring Framework 핵심 개념 - AOP

*AOP를 배우기 전 중요한 기본 개념* ●핵심 기능(Core Concerns) : 객체가 제공하는 고유의 기능(업무 로직 등을 포함) ●부가 기능(CROSS-CUTTING CONCERNS) : 핵심 기능을 보조하기 위해 제공되는 기능으로 핵심 기능과 함께 사용됨. 예)로깅,보안,트랜잭션 등 ●Aspect : 부가 기능을 정의한 코드인 어드바이스(Advice)와 어드바이스를 어디에 적용할지 결정하는 포인트컷(PointCut)을 합친 개념 (Advice + PointCut ⇒ Aspect) **AOP가 필요한 이유에 대해** ●객체 지향 프로그래밍(OOP)방식의 프로그래밍을 했을 때 여러 곳에서 공통적으로 사용되는 부가 기능의 중복 코드가 발생함 ●중복되는 부가 기능에 수정 및 삭제가 필요하게 되면 사용되..

부트캠프 2023.02.09