Programming/Spring 15

REST API 요청/응답 과정, 구현

[KT] AIVLE SCHOOL 39일차 REST API 요청/응답 과정클라이언트는 HTTP 요청을 통해 서버에 데이터를 보내고, 서버는 그에 대한 응답을 반환REST API는 응답 데이터로 JSON 타입의 데이터를 클라이언트에게 전송클라이언트 -> 서버 : 요청 HTTP 메시지(Request)HTTP 요청 메세지는 시작 라인[요청 라인](start-line), 헤더(header), 본문(body)으로 구성요청 라인: HTTP Request Message의 시작 라인HTTP Method : 요청의 의도를 담고 있는 HTTP Method (GET,POST,DELETE 등)를 포함Request target : HTTP Request가 전송되는 목표 주소HTTP version : 버전에 따라 메세지 구조가 ..

Programming/Spring 2025.05.23

@Transactional

[KT] AIVLE SCHOOL 39일차 트랜잭션(Transaction)@TransactionalSpring Framework는 @Transaction 어노테이션을 이용한 선언적 트랜잭션 처리를 지원트랜잭션(Transaction)은 여러 단계로 구성된 작업을 논리적으로 묶어서 하나의 논리적 단위로 처리하는 것을 의미DB에서 트랜잭션은 하나의 작업을 안전하게 처리하도록 보장해 주는 것을 의미@Transactional 어노테이션은 클래스나 메서드 레벨에 적용할 수 있음해당 어노테이션은 다양한 속성을 가지고 있음Propagation기본적으로 존재하는 트랜잭션에 참여하거나 새로운 트랜잭션을 시작Isolation: 데이터베이스의 기본 격리 수준을 따르거나, 특정 격리 수준을 지정할 수 있음ReadOnly: 트랜..

Programming/Spring 2025.05.23

Service Layer

[KT] AIVLE SCHOOL 39일차 Service컨트롤러와 리파지토리 사이에 위치하는 계층으로, 서버의 핵심 기능 (비즈니스 로직)을 처리하는 순서를 총괄Presentation Layer는 Spring MVC를 통해 클라이언트의 요청을 처리해 응답을 생성Data Access Layer는 데이터의 영속성을 관리하고, CRUD 등의 작업을 수행Service LayerService Layer는 클라이언트의 요청 데이터를 기반으로 실질적인 비즈니스 요구사항을 처리하는 계층비즈니스 로직의 분리와 중앙화 Service Layer를 도입함으로써 비즈니스 로직을 분리하고 중앙화 시켜 가독성과 유지보수성이 향상되고 개발 효율을 높임Presentation Layer, Data Access Layer, Domain M..

Programming/Spring 2025.05.23

REST / REST API

[KT] AIVLE SCHOOL 38일차 REST(Representational State Transfer)자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미2000년도 로이 필딩의 박사 학위 논문에서 최초로 소개HTTP 설계의 우수성에 비해 제대로 사용되지 못하는 모습이 안타까워 만들어진 웹 아키텍처자원(resource)의 표현(representation)에 의한 상태 전달을 뜻함자원 : 해당 소프트웨어가 관리하는 모든 것 (이미지, 데이터, 문서 등) 표현 : 그 자원을 표현하기 위한 이름 상태 전달 : 데이터가 요청되는 시점의 자원의 상태를 전달 JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적REST의 특징인터페이스 일관성 (Uniform Interface) 리소스에..

Programming/Spring 2025.05.23

JPA(Java Persistence API)

[KT] AIVLE SCHOOL 38일차 JPA(Java Persistence API)Java 어플리케이션에서 관계형 데이터베이스를 객체 - 관계 방식(ORM)으로 사용할 수 있도록 만든 인터페이스JPA는 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스와 어노테이션의 표준 집합을 정의JPA는 단순한 명세(인터페이스)이기에 구현은 없고, 다양한 ORM 프레임워크에서 구현할 수 있는 공통 API를 제공Hibernate는 JPA의 구현체로 JPA의 모든 기능을 지원하며, 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리하여, 개발자가 일일이 SQL 쿼리를 작성하지 않도록 도와줌다른 구현체를 사용하여 JPA를 사용할 수도 있음JPA를 사용해야 하는 이유생산성JPA를 사용하면 메서..

Programming/Spring 2025.05.23

Spring Data JPA

[KT] AIVLE SCHOOL 37일차 Spring Data 기본 데이터 저장소(DB)에 대한 특성은 유지하며, 데이터 액세스 방법에 대하여 친숙하고 익숙한 접근 방법을 제시하는 목적을 가진 Spring 기반 프로그래밍 모델데이터 액세스, 관계형 및 비관계형 데이터베이스, 클라우드 기반 데이터 서비스를 쉽게 사용할 수 있도록 함어떤 데이터 저장소(RDBMS)를 사용하더라도 일관적인 방법의 프로그래밍으로 데이터에 접근할 수 있도록 함Spring Data JPAJPA 기반 저장소를 쉽게 구현할 수 있도록 해주며, 데이터 액세스 기술을 사용하는 스프링 기반 어플리케이션을 쉽게 구축할 수 있음Spring Framework 에서 제공하는 모듈 중 하나로, 개발자가 더 쉽고 편하게 JPA를 사용할 수 있도록 해..

Programming/Spring 2025.05.22

Spring DataBase Access

[KT] AIVLE SCHOOL 37일차 영속성(persistence)데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성영속성은 파일 시스템, 관계형 데이터베이스(RDB) 등을 통해 구현할 수 있음Java에서 데이터베이스 프로그래밍은 JDBC(Java Database Connectivity)를 통해 이루어짐Spring DataBase 프로그래밍 유형JDBC(Java Database Connectivity) 자바에서 데이터베이스에 접근할 수 있도록 하는 자바 API자바의 기본 데이터베이스 프로그래밍 방법JDBC 규격에 따라 정의된 인터페이스들을 구현한 Driver 클래스를 사용해 서로 다른 데이터베이스를 동일한 방법으로 사용할 수 있는 구조를 제공별도 추가 라이브러리 설치 없이도 ..

Programming/Spring 2025.05.22

MVC 디자인 패턴

[KT] AIVLE SCHOOL 37일차 디자인 패턴(Design pattern)특정 문맥에서 공통적으로 발생할 수 있는 문제에 대해 재사용 가능한 해결책과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 방법으로 만들고 이후에 이름을 붙여 좋은 형태로 규약을 만들어 정리한 것e.g. 객체를 한 개만 만들어 써 리소스 관리에 효율적 --> 이걸 싱글톤 패턴이라고 이름 붙여 사용MVC(Model - View - Controller)애플리케이션을 3가지 역할로 구분하여 개발하는 방법론비즈니스 로직과 UI 로직을 분리하여 코드 종속성을 줄이고 구성 요소 간 역할을 명확하게 함으로써 분리가 쉽고 협업을 용이하게 함Controller사용자 입력을 받아 데이터를 변경하거나 이를 뷰에 전달하는 역할컨트..

Programming/Spring 2025.05.22

Spring Boot

[KT] AIVLE SCHOOL 37일차 Spring Boot스프링 부트는 단독 실행이 가능하고, 실행하기만 하면 되는 상용화 가능한 수 준의 스프링 기반 애플리케이션을 쉽게 만들 수 있음최소의 설정으로 스프링 플랫폼과 third-party 라이브러리들을 사용할 수 있음즉, 스프링 기반의 애플리케이션을 개발하기 쉽도록 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 활용할 수 있게 도움스프링 부트는 스프링 프레임워크 위에 구축되었음. 이는 스프링의 핵심 기능인 의존성 주입, 트랜잭션 관리, 웹 개발, 데이터 접근 등을 스프링 부트 애플리케이션에서도 사용할 수 있음을 의미스프링 부트는 기본적으로 스프링 프레임워크의 간소화된 버전이 아니라 스프링 애플리케이션을 더욱 빠르고 쉽게 개발할 수 있게 하는 ..

Programming/Spring 2025.05.22

AOP - 관점 지향 프로그래밍

[KT] AIVLE SCHOOL 36일차 AOP(Aspect-Oriented Programming)관점 지향 프로그래밍핵심 관심사와 횡단 관심사에 대한 관점들로 프로그램을 분해하여 객체 지향이 추구하는 모듈을 효과적으로 지원하도록 하는 프로그래밍 기법기능별로 모듈을 분리했음에도 불구하고 생기는 중복 코드의 단점을 해결하고자 나온 방식공통 기능과 핵심 기능을 분리하여 필요할 때만 공통 기능을 핵심 기능에 넣어주는 형식핵심 기능비즈니스 로직에 대한 관심사로 애플리케이션 로직이 제공하는 고유의 업무 로직공통(부가) 기능핵심 관심사를 보조하기 위해 제공되는 기능으로 로그, 보안, 트랜잭션 기능 등을 포함단독으로 사용되지 않고 핵심 기능과 함께 사용AOP 예시대학교 강의대학에서 여러 강의를 듣고 있다고 가정해보자..

Programming/Spring 2025.05.20