@Transactional 개념@Transactional은 스프링이 제공하는 어노테이션으로, 이전에 사용되던 트랙잭션 매니저나 트랜잭션 템플릿과 달리 더 간단하고 선언적인 방식으로 트랜잭션을 관리할 수 있도록 해주고 서비스 계층에서 트랜잭션 기술에 의존하지 않게 도와준다. 기존에 트랜잭션 매니저나 트랜잭션 템플릿을 사용할 때, 트랜잭션 시작, 커밋, 롤백 같은 작업을 코드로 명시적으로 작성해주어야 했다. 하지만 `@Transactional`은 이런 작업을 애노테이션 하나로 간단하게 처리할 수 있도록 해준다. 주요 기능1. 트랜잭션 시작 및 종료`@Transactional`이 적용된 메서드가 호출되면 스프링은 자동으로 트랜잭션을 시작한다.메서드가 성공적으로 완료되면 트랜잭션이 커밋되고, 실패 시(예외발생)..
트랙잭션(Transactions)이란?트랙잭션이란 데이터베이스의 상태를 변화시키는 한 개의 논리적 작업 단위를 의미한다. 먼저 데이터베이스의 상태를 변화시킨다는 것은 SELECT, INSERT, UPDATE, DELETE와 같은 데이터 조작어(DML)을 사용하여 데이터베이스에 새로운 데이터를 추가하거나, 기존 데이터를 조회, 수정, 삭제하는 행동을 말한다. 다음으로 한 개의 논리적 작업 단위란, 여러 개의 작업(쿼리, 삽입, 수정, 삭제 등)을 하나의 묶음으로 처리하는것을 의미한다. 즉, 여러 개의 작업이 모여 하나의 의미있는 작업을 이루는 경우, 이를 논리적 작업 단위라고 말할 수 있다. 예를 들어, 은행 계좌 이체를 생각해보자. 계좌 이체를 할 때, A 계좌에서 돈을 출금하고 B 계좌로 돈을 입금하는..
서론오늘은 김영한님의 스프링 DB강의를 들으면서 공부한 내용을 정리해보았다. JDBCJDBC의 개념은 위키백과에 다음과 같이 나와있다. JDBC(Java Databse Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 일반적인 웹 어플리케이션은 회원 정보, 상품 정보 등 여러가지 데이터를 메모리에 저장하지 않는다. 메모리에 데이터를 저장하게 되면 휘발성 메모리 특성상, 애플리케이션이 종료되거나 서버가 재부팅되면 데이터가 사라지기 때문이다. 따라서 데이터를 영구적으로 저장하고 관리하기 데이터베이스를 사용한다. 이때 자바 기반의 애플리케이션에서는 JDBC를 사용하여 데이터베이스와 연결하고 데이..
서론오늘은 스프링 테스트에 대해 공부를 하였고 정리를 해보았다.스프링 테스트스프링 테스트란 스프링 어플레케이션을 테스트하는데 필요한 기능과 도구를 지원해주는 프레임워크로, 스프링의 다양한 구성 요소를 테스트하고 전체 애플리케이션이 올바르게 동작하는지 검증할 수 있게해준다. 🛒 스프링 테스트 의존성 추가스프링 애플리케이션에서 스프링 테스트를 사용하기 위해 먼저 스프링 테스트 라이브러리를 추가해주어야 한다. 스프링 부트를 사용하여 프로젝트를 생성하면 다음과같이 기본적으로 스프링 테스트와 관련된 의존성이 추가 되어 있다. ❓ 테스트 라이브러리 안에는 뭐가 들어 있을까?스프링 부트를 사용하면 기본적으로 테스트와 관련된 의존성이 자동으로 추가된다. Gradle을 통해 의존 관계를 설정하면, Maven Centr..
서론어제는 제어의 역전 (Inversion Of Control), 의존성 주입, 스프링 컨테이너와 스프링 빈에서 공부를 하였다. 오늘은 싱글톤 패턴과 스프링 컨테이너의 관계, 스프링 빈의 생명주기 콜백, 빈 스코프에 대해서 공부를 하였고 알고리즘 스터디를 통해 트리 자료구조를 공부하였으며 개념과 알고리즘의 대한 풀이를 발표하는 시간을 가졌다. 싱글톤 패턴싱글톤 패턴이란 디자인 패턴 중 하나로 특정 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 패턴이다. 싱글톤 패턴을 적용하면 하나의 클래스에 대해 전역적으로 접근 가능한 인스턴스를 하나만 생성하고 유지할 수 있다. 싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 이른 초기화(Eager Initialization) 방법을 사용해 구현해보았다. 이..
서론스프링 프레임워크의 주요 개념을 이해하기 위해 상향식 접근법으로 공부를 하였다. 먼저 제어의 역전부터 시작하여 스프링 컨테이너 까지 이해하는것을 목표로 공부를 하고 기록하였다. 제어의 역전일반적으로 소프트웨어 개발 시 제어 흐름은 개발자가 직접 관리한다. 하지만 제어의 흐름이 개발자에게 있는 것이 아니라 프레임워크나 외부 환경에 의해 관리될 때, 이를 제어의 역전이라고 부른다. 예를 들어, 아래 소스 코드에서 `OrderServiceImpl`은 `OrderService` 인터페이스를 구현하고 있으며, 클래스 내부에서 직접 `MemberRepository`와 `DiscountPolicy` 객체를 생성하여 의존관계를 설정하고 있는것을 확인할 수 있다.public class OrderServiceImpl ..
서론스프링은 자바 플랫폼을 위한 오픈 소스 프레임워크로, 대규모 엔터프라이즈 애플리케이션을 빠르게 개발할 수 있도록 도와주는 도구라고 배웠고 저는 스프링이 객체 지향 언어의 강력한 특징을 잘 살려내는 프레임워크라고 이해하였다. 스프링의 핵심 개념인 스프링 컨테이너를 비롯해 스프링을 깊이 이해하기 위해, 객체지향 설계 방법을 상향식 접근으로 학습해보려고 한다. 좋은 객체지향 설계의 5가지 원칙(SOLID)SOLID는 객체 지향 설계 원칙의 다섯 가지 핵심 개념을 모아둔 약어이다. 이 원칙들은 소프트웨어 설계를 더 유연하고 유지보수하기 쉽게 만드는 데 도움을 줄 수 있다. 선요약SRP (단일 책임 원칙) : 하나의 클래스는 하나의 책임만을 가져야 한다.OCP (개방 폐쇄 원칙) : 클래스는 확장에는 열려있..
서론오늘은 REST 와 RESTful API 에 대하여 공부를 하고 내용을 정리해보았다. 본론 REST 개념 정리REST(Representational State Transfer)는 웹 애플리케이션에서 클라이언트와 서버 간의 데이터를 주고받는 방식을 정의한 아키텍처 스타일을 말한다. REST는 자원을 URI로 식별하고, 자원에 대한 다양한 작업을 HTTP 메서드를 통해 수행한다, 즉 자원을 고유한 이름(URI)로 구분하고, 그 자원의 상태를 주고 받는 방식을 말한다. 자원(Resource)여기서 말하는 자원은 서버에서 관리하는 모든 데이터를 의미하며, 각 자원은 고유한 URI(Uniform Resource Identifier)로 식별 된다. 자원의 종류는 다양하며 자원의 종류와 URI를 예를 들어보았..
서론스프링 MVC는 9월 3일 쯤에 배웠던 내용이지만 이전에 서블릿과 CS 지식이 부족하여 지금와서야 공부를 하였다. 오늘은 스프링 MVC의 상위 개념인 디자인패턴과 MVC 패턴에 대해서 이해하였고 정리를 해보았다.본론디자인 패턴이란?디자인 패턴이랑 소프트웨어 개발 중 자주 발생하는 문제들을 해결하기 위한 재사용 가능한 해결책을 말한다. 쉽게 말해 특정 상황에서 자주 맞딱뜨리는 문제를 해결하기 위해 검증된 방법을 정리해 놓은것이다. 특정한 상황에서 적용 가능한 일반적인 해결책을 제공하므로 이를 사용하여 개발 시간을 단축시킬 수 있다.패턴을 따르는 코드는 일정한 구조를 갖고있기 때문에 코드를 이해하고 수정하기 쉬워진다. MVC 패턴이란?MVC 패턴은 디자인 패턴 중 하나로 애플리케이션을 세 가지 주요 부분..
서론>오늘 수업에서는 스프링 부트와 MSA REST에 대해서 수업을 진행하였다. 이 내용에 대해서도 주말에 정리하는 시간을 가져봐야겠다. 나의 오늘의 목표는 Spring의 DispatcherServlet을 이해하는 것이다. 이를 제대로 이해하기 위해서는 먼저 프론트 컨트롤러 패턴에 대한 이해가 필요할거 같다고 생각하였다. 그래서 프론트 컨트롤러 패턴의 개념과 코드를 통해 실습해보며 이해하고 더 나아가 DispatcherServlet까지 이해해보려고 한다.본론> 프론트 컨트롤러프론트 컨트롤러란 소프트웨어 디자인 패턴 중 하나로, 웹 애플리케이션에서 들어오는 모든 요청을 한 곳에서 받아 처리하는 방식을 말한다. 쉽게 말해 여러 페이지에 접근할 때 각 페이지로 바로 가는것이 아니라, 먼저 하나의 관문(프론트 ..