@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까지 이해해보려고 한다.본론> 프론트 컨트롤러프론트 컨트롤러란 소프트웨어 디자인 패턴 중 하나로, 웹 애플리케이션에서 들어오는 모든 요청을 한 곳에서 받아 처리하는 방식을 말한다. 쉽게 말해 여러 페이지에 접근할 때 각 페이지로 바로 가는것이 아니라, 먼저 하나의 관문(프론트 ..
서론 >스프링을 공부하기 앞서 서블릿의 기본개념과 동작방식에 대해 이해하면 좋을거 같아 서블릿을 공부한 내용과 공부하면서 궁금했던 내용을 정리해보았다.본론 > 서블릿이란?서블릿이란 Java 기반의 웹 애플리케이션에서 사용하는 중요한 기술 중 하나로, 클라이언트의 요청을 받아 동적인 웹 페이지를 생성하고, 그 결과를 클라이언트에게 응답해 주는 서버 측 프로그램을 말한다. 예를 들어, 어떤 사용자가 로그인을 한다고 가정해보자. 먼저 아이디와 패스워드를 입력하고 로그인 버튼을 누를 것이다. 이제 로그인 버튼을 누르면 입력한 정보가 웹 서버로 전송이 된다. 이때 서블릿이 그 요청을 받아 사용자가 입력한 아이디와 패스워드를 검증하고, 올바르다면 로그인 성공 메시지를 표시하고 메인 페이지로 이동시킬 수 있다. 만약..
서론오늘은 스프링을 이용한 미션이 주어졌다. 이번 미션은 스프링 MVC와 어노테이션을 사용하여 간단한 웹 애플리케이션을 만드는 것이었으며, 이를 통해 스프링 개발 환경을 구축하고, 스프링 MVC와 어노테이션에 대해 학습하고 기록하는 것이 목표였다. 이 글에서는 프로젝트 생성 단계부터 Maven을 활용한 프로젝트 구성 과정과, 스프링 관련 설정을 직접 다루면서 배운 내용을 정리해보려고 한다.본론1. 프로젝트 생성먼저 미션을 수행할 프로젝트를 생성해주었다. 프로젝트는 Maven 기반의 프로젝트를 생성해주었고 이름과 경로를 지정해주었다. 그리고 Archetype은 어떤 역할을 하는지 궁금하여 공부 해보았다. ArchetypeArchetype은 무슨 역할을 하는지 궁금하여 Archetype을 지정한 프로젝트와 ..
서론웹 서버와 웹 애플리케이션의 개념을 알아보았고 이 둘의 차이점을 공부해보았다.본론 Web Sever웹 서버는 클라이언트로부터 HTTP 요청을 받아드리며, 해당 요청에 따라 HTML 파일, 이미지, CSS 등과 같이 정적 리소스를 제공하는 소프트웨어 또는 하드웨어 시스템을 말한다. 소프트웨어로서의 웹서버소프트웨어로서의 웹서버는 HTTP/HTTPS 프로토콜을 통해 클라이언트로부터 들어오는 요청을 처리하고 요청된 정적 파일(예: HTML, CSS, 이미지 파일 등)을 제공하거나, 요청을 다른 프로그램(WAS 등) 으로 전달해 동적 콘텐츠를 생성하는 데 중개 역할을 한다. 대표적인 소프트웨어 웹 서버로는 Apache, Nginx, Microsoft IIS 등이 있다. 하드웨어로서의 웹서버하드웨어로서의 웹서버..
서론구름톤 백엔드 과정을 시작한지 이제 3주차이다. 이전까지는 자바의 기본적인 문법부터 시작하여 객체지향 프로그래밍 까지 여러 내용을 다루었고 이제 본격적으로 스프링에 대해서 진도를 나가는거 같다. 다른분들은 어떻게 느낄지 모르겠지만 난 수업시간이 2시간으로 제한되어있어 강사님이 제한된 시간내에 많은것을 다루다 보니 깊이 있게 학습하지 못하는것 같아 아쉽다 라는 생각이 들었다. 지금까지는 쉬운 내용이라 따라갈 수 있었지만 갈 수록 어려운 내용을 학습할텐데 잘 따라갈 수 있을지 모르겠다. 여튼 오늘은 스프링에 대해 공부를 하였고 스프링 프레임워크를 공부하기 이전에 라이브러리와 프레임워크의 개념과 차이점을 공부하면 좋을거 같아 정리해보았고 스프링의 개념에 대해서 조금 더 찾아가며 나만의 언어로 정리해보았다...
서론본격적인 웹 개발을 시작하기에 앞서, 웹의 동작 방식에 대한 기본적인 개념을 이해하는 것이 중요하다고 생각하였다. 이러한 기본 지식은 웹 개발 과정에서 발생할 수 있는 다양한 상황에 문제를 해결할 수 있는 필수적인 지식이라고 생각한다! 또한 웹 구성요소에 대해 공부하였고 HTML 과 CSS를 이용하여 간단한 웹 사이트를 만들어보았다.본론 웹 브라우저와 서버 간 정보 전송 과정나는 정보를 찾기 위해 웹 브라우저인 '크롬'을 사용하여 'google.com'에 접속하고, 구글 검색 기능을 통해 필요한 정보를 검색한다. 이 과정에서 내가 웹 브라우저를 통해 구글 서버와 어떻게 정보를 주고 받는지 궁금하였고 이 과정이 어떻게 이루어지는지 정리를 해보았다. 웹 브라우저에서 'google.com' 입력시 동작 ..
서론자바 공부를 하면서 객체는 어디에 저장이되고 Java언어로 작성된 프로그램은 어떻게 실행되는지 다시 한 번 개념을 잡고 가면 좋을거 같다라는 생각이 들어 공부하였고 다시 나만의 언어로 정리를 해보았다.본론 JVM(Java Virtual Machine)JVM(Java Virtual Machine)의 약자로 자바 가상 머신이라고도 말한다. JVM은 자바 프로그램을 효율적으로 실행하기 위해 만들어진 소프트웨어로 여러 구성 요소로 이루어져있다. JVM 구성 요소클래스 로더 :자바 클래스 파일을 로드하고 바이트 코드를 메모리에 적재하여 JVM 이해할 수 있는 형태로 변환한다.런타임 데이터 영역 :자바 프로그램이 실행되는 동안 데이터를 저장하고 관리하는 메모리 영역이다.실행 엔진 :바이트 코드를 실제로 실행하..
서론오늘은 자바 예외 처리, 쓰레드, 문자열에 대해서 배웠는데 바로바로 정리를 안하니깐 내용이 쌓여간다... 그래서 쓰레드랑, 문자열은 정리를 못했다 정리와 기록을 습관하자잇.. 본론 예외 개념자바에서 예외란 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류를 말한다. 예외가 발생하면 프로그램의 정상적인 흐름을 방해하고 프로그램이 비정상적으로 종료될 수 있다. 🌳 Object | |-- 💥 Throwable | |-- 🚨 Error | | | |-- 🔗 LinkageError | | | | | |-- 📜 NoClassDefFoundError | | ..
서론자바의 추상 클래스, 추상 메서드, 인터페이스에 대해 공부하였고 실습과 개념정리를 통해 다시 한번 제데로 이해할 수 있는 시간이였다. 그리고 옵시디언을 이용하여 내용을 정리하고 있는데 노트간에 링크 기능이 마음에든다...본론추상 클래스추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스이다.예를 들어 "동물" 이라는 개념을 생각해 볼 수 있다. 동물은 구체적인 형태나 실체가 존재하지 않고 개념적으로 존재하며, 모든 동물이 공통적으로 가지는 속성과 행동을 정의하는 개념이다. 추상적인 개념은 구체적인 형태나 실체가 존재하지 않고 여러가지 공통적인 특징을 모아 놓은 것을 의미한다.이 추상적인 개념을 바탕으로 강아지나, 고양이 처럼 구체적인 형태나 실체가 존재하는 것을 만들 수 있다. 이처럼 추상적인 ..
서론자바의 상속과 오버라이딩 개념을 공부한 후, 예제를 만들어 이를 적용해 보았다. 이 과정을 통해 배운 내용을 보다 명확하게 이해할 수 있었으며, 개념을 다시 정리함으로써 더욱 확실히 내것으로 만들 수 있었다. 또한 알고리즘 스터디 시간에 발표를 진행하였고 발표때 망신 당하지 않기 위해 발표 준비를 열심히 하였다. 발표는 잘못했지만 발표 준비하는 과정에서 배열과, ArraysList, LinkedList의 개념을 이해하고 여러 문제를 풀어보며 개념을 익혔다. 열심히 하다보면 언젠간 잘하는날이 오겠지 뭐..본론 상속상속 이라는 단어는 일반적으로 누군가에게 무엇인가를 물려받는 것을 의미한다. 자바 객체 지향 프로그래밍에서 말하는 상속은 기존 클래스의 속성와 기능을 새로운 클래스에 물려주는것을 의미한다. ..
서론오늘은 자바의 기본적인 내용인 메서드와 객체지향 프로그래밍에 대해서 공부를 하였고 프로그램의 기능적 분할이라는 개념을 배웠다.본론 메서드메서드란 특정한 기능을 수행하는 코드를 하나로 묶어 재사용이 가능하도록 만든 코드 블럭을 의미한다. 메서드를 사용하게 된다면 중복코드를 줄일 수 있고 코드를 재사용할 수 있도록 해주며 유지보수와 가독성이 높아진다는 장점을 가지고 있다. 프로그램의 기능적 분할프로그램의 기능적 분할이란 복잡한 프로그램을 작은 부분들로 나누는것을 의미한다. 이렇게 작은 부분으로 나누면 프로그램을 이해하고 관리하기가 쉬워진다.예를 들어, 피자를 한 판 시켰다고 생각해보자. 피자를 통째로 먹으려면 힘들겠지만 작은 조각으노 나누어 먹게된다면 각 조각은 먹기 쉬워질것이다. 프로그램도 마찬가지..
서론오늘도 자바 기본적인 부분에 대해서 공부를 하였고 배열과 반복문에 대해서 공부를 하였다. 누군가에게 설명하지 못한다면 이해하지 못한것이다. 개념을 명확하게 이해하기 위해 배열과 반복문에 대해 나만의 언어로 재정리를 해보았다. 본론 > 반복문자바의 반복에는 for문, for-each문, while문, do-while문이 존재하고 각 반복문의 구조나 특징에 대해서 정리를 해보았다. | 1. for 문for문은 반복 횟수가 정해져있을 때 유용하게 사용된다. for문은 초기화, 조건식, 증감식, 반복할 코드로 구성되어있다. for문 구성요소초기화 :반복문이 시작되기 전에 한 번만 실행된다.반복에 사용할 변수를 선언하고 초기화 한다조건식 :반복을 계속할지 여부를 결정하는 조건식을 작성한다.조건식이 true..
서론오늘은 자바의 기본적인 내용인 변수와 기본 타입, 참조 타입에 대해서 공부를 하였고. 이미 알고 있는 개념이라고 생각하였지만 막상 이 내용을 다른 사람에게 설명하려고 하니 내가 예상보다 더 이해하지 못함을 깨달았다. 그래서 다시 한번 나만의 언어로 정리하여 개념을 명확하게 이해하려고 노력하였다.본론 기본타입(Primitive)기본 타입 변수는 자바에서 기본적인 데이터 타입을 저장하는 변수이다. 기본 타입 변수는 모두 8개가 존재하며 기본 타입은 값을 직접적으로 접근하기 떄문에 연산속도가 빠르다는 장점이 존재하지만 추가적인 기능 (메서드)를 지원하지 않는다. 기본타입의 종류크기정수형실수형문자불리언1bytebyte--boolean2byteshort-char 4byteintfloat- 8btelongdo..
오늘 공부한 내용 요약Git과 Github를 직접 설치하고 실습하는 과정에서 이 둘의 사용법과 기본적인 개념에 대해 알아갈 수 있었다. Git이란?Git은 분산형 버전 관리 시스템으로 개발자가 소스 코드를 포함한 모든 파일의 변경 내역을 관리하고 추적할 수 있도록 도와준다.이러한 파일의 변경 내역을 관리하고 추적하는 것을 "버전 관리"라고 한다. 버전 관리 시스템을 사용하면 코드의 변경 내역을 추적하고, 필요에 따라 이전 버전으로 돌아갈 수 있는 기능을 제공한다. 즉, 개발자들은 Git을 사용하여 작업의 이력을 체계적으로 관리하고 협업 과정에서 발생하는 문제를 효과적으로 해결할 수 있다. 분산형 버전 관리 시스템이란?분산형 버전 관리 시스템은 개발자가 자신의 로컬 컴퓨터에 전체 프로젝트와 그에 따른 버..