전체 글 69

[개념정리] RESTful API | 적절한 관심사 분리 | Setter 사용 | NoSQL과 RDBMS | 객체지향 프로그래밍의 정의와 활용

1-1. RESTful한 API의 개념RESTful API는 Representational State Transfer의 약자로, 웹 표준을 활용하여 시스템 간의 상호 운용성을 제공하는 방법입니다. REST는 자원(Resource)의 표현(Representation)에 의한 상태 전달을 의미하며, 웹의 기본적인 기술과 프로토콜을 사용합니다.왜냐하면 RESTful API는 HTTP 프로토콜을 기반으로 하며, 웹에서 사용되는 기술과 규약을 그대로 활용하기 때문입니다. 이를 통해 웹 어플리케이션 또는 서비스 간에 정보를 쉽게 주고 받을 수 있습니다.RESTful API의 핵심 원칙에는 자원의 식별, 메시지를 통한 자원의 조작, 자기 서술적 메시지, 애플리케이션 상태의 엔진으로서의 하이퍼미디어 등이 있습니다.이러..

개념정리 2024.08.27

[개발일지] Spring Boot 프로젝트 | 할일 관리 프로젝트 | 3 Layer Architecture 구현

저번 시간에 포스팅한 3 Layer Architecture 구조를 기반으로할일 관리 프로젝트를 Spring Boot로 제작해보았습니다.https://kimslab01.tistory.com/28 [Spring] 3 Layer Architecture | Spring 3 Layer✔  3 Layer Architecture란? 서버를 개발 관점에서 각 계층별로 역할을 분리하는 개념입니다.        1. Presentation Layer, Controller역할: 사용자가 입력한 데이터의 형식이나 간단한 유효성 검사를kimslab01.tistory.com궁금하신 분들은 포스팅 참고해주시면 감사하겠습니다.  할일을 관리하는 프로젝트를 구현하기 위해서는일정을 저장, 단건 조회, 수정할 수 있습니다.일정은 작성 유..

개발일지 2024.08.23

[Spring] 3 Layer Architecture | Spring 3 Layer

✔  3 Layer Architecture란? 서버를 개발 관점에서 각 계층별로 역할을 분리하는 개념입니다.        1. Presentation Layer, Controller역할: 사용자가 입력한 데이터의 형식이나 간단한 유효성 검사를 수행합니다. 예를 들어, 입력 필드가 빈 값인지, 숫자 필드에 숫자가 들어왔는지, 이메일 형식이 올바른지 등을 검증합니다.쉬운설명: 사용자가 입력한 요청이 유효한 요청인지 검사하고 필터링하는 역할을 합니다. 더하여, 사용자에게 요청을 받고, 데이터를 전달하는 역할을 합니다.구성요소: Spring MVC의 @Controller 혹은 @RestController예시public class UserDTO { @NotNull @Size(min = 2, max = ..

Spring 2024.08.21

[Spring] Spring MVC | Spring MVC의 개념

1. Model(모델)역할: 데이터와 비즈니스 로직을 다룹니다.설명: 모델은 애플리케이션이 관리해야 하는 정보나 데이터를 의미합니다. 예를 들어, 사용자의 정보(이름, 나이, 주소 등)를 저장하거나 데이터베이스에서 가져오는 작업을 담당합니다.예시: 사용자가 스케줄 일정을 생성하면 이를 생성하고 저장하는 역할을 수행합니다.  2. View(뷰)역할: 사용자가 보게 될 화면을 담당합니다.설명: 뷰는 데이터가 시각적으로 표현되는 부분입니다. 화면에 출력될 내용(HTML, 텍스트 등)을 만들고 사용자에게 보여주는 역할을 합니다.예시: 사용자가 스케줄 일정을 생성하는데 성공하면 "스케줄 생성 성공"이라는 메시지를 화면에 보여주는 것이 뷰의 역할입니다.   3. Controller(컨트롤러)역할: 모델과 뷰를 연결..

Spring 2024.08.20

[Spring] Spring Boot Transaction 트랜잭션 개념 이해하기

트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스에서 하나의 작업 단위를 말합니다. 이 작업 단위는 여러 개의 작업을 하나의 논리적 작업으로 묶어 처리합니다.트랜잭션의 중요한 특징은 'ACID'라고 불리는 네 가지 속성을 가지고 있습니다.   1. 원자성(Atomicity): 트랜잭션 내의 모든 작업은 전부 성공하거나 전부 실패해야 합니다.즉, 일부만 성공하고 일부만 실패하는 상황이 발생하면 안됩니다. 이를 위해 트랜잭션 중에 오류가 발생하면 모든 작업을 취소하고, 데이터베이스를 트랜잭션 시작 이전 상태로 되돌립니다. 2. 일관성(Consistency): 트랜잭션이 완료된 후에도 데이터베이스의 상태는 항상 일관성 있게 유지되어야 합니다.트랜잭션이 성공적으로 완료되면, 데이터베이스는 정합성을 유..

Spring 2024.08.19

[Spring] Spring Container | IoC 제어의 역전 | DI 의존성 주입

IoC란?IoC란 Inversion of Control의 약자입니다. 제어의 역전이라는 뜻인데요! 프로그래머와 프레임워크의 주체가 바뀌었다고도 표현합니다.일반적인 경우라면 개발자가 미리 정한 순서에 따라 생성, 실행을 주도하고 하였습니다. (개발자가 제어권을 가짐)IoC가 등장한 이후로는 객체의 생성, 생명주기, 관리까지 모든 객체에 대한 주도권을 프레임워크가 가져간 것입니다. IoC를 통해 Application을 구성하는 객체 간의 낮은 결합도를 유지할 수 있게 되었습니다.IoC의 역할을 담당하는 것이 Spring Container입니다.Spring Container를 IoC Container라고도 합니다.   Spring Container란? 스프링 컨테이너는 Spring Application 내에서..

Spring 2024.08.18

[Spring] Spring Boot로 할일 관리 앱 서버 개발하기 | 3 Layer Architecture 구현 | DTO 구현 | Controller, Service, Repository 역할 분리 | IoC와 DI | 사용자 정의 예외 클래스 구현

스프링 부트로 할일 관리 앱 서버를 개발했습니다. 이 프로젝트에서 가장 중요하게 생각한 것은 1. 3 Layer Architecture 구현2. Controller - Service - Repository로 역할 분리하기3. IoC와 DI를 이해하고 구현하기4. DTO 구현하기5. 사용자 정의 예외 클래스 구현  입니다. 세가지를 다 구현하려고 하니확실히 여태까지 했던 프로젝트보다 파일 수가 많아졌습니다.  최종으로 완성된 코드의 파일들입니다.굉장히 많습니다.많은 기능들이 따로 구현되어 있기 때문에헷갈릴 수 있어 각각의 코드들이 어떤 역할을 하는지 적어보려 합니다.         com/└── sparta/ └── planmanager/ ├── controller/ │ ..

Spring 2024.08.16

[Spring] Spring Boot와 MySQL 연결 시 오류 | [Error] Could not find mysql:mysql-connector-java:

Spring Boot에 MySQL을 연결하는 과정에서 계속 > Task :compileJava FAILEDExecution failed for task ':compileJava'.> Could not resolve all files for configuration ':compileClasspath'. > Could not find mysql:mysql-connector-java:9.0. Required by: project :Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_rep..

Spring 2024.08.13

[Spring] Path Variable | Request Param

Spring에서 Client가 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있습니다.그 방법에는 Path Variable과 Request Param이 있는데요!구현하기 전에 html 파일을 먼저 작성해주세요. GET /star/{name}/age/{age} 이름: 나이: 전송GET /hello/request/form/param 이름: 나이: 전송POST /hello/request/form/param 이름: 나이: 전송POST /hello/request/form/model 이름: 나이: 전송GET /hello/request/form/param/model 이름: ..

Spring 2024.08.12