개발
[Spring Boot & AWS] Chpt 1 - 인텔리제이로 스프링 부트 시작하기
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 1. 인텔리제이 소개 자바 웹 개발 IDE의 쌍두마차가 있다. 바로 이클립스 재단의 '이클립스'와 젯브레인즈의 '인텔리제이'다. 이 책의 저자는 이클립스에 비해 인텔리제이가 다음과 같은 장점이 있어 추천하신다고 한다. 강력한 추천 기능 훨씬 더 다양한 리팩토링과 디버깅 기능 이클립스의 Git보다 훨씬 높은 자유도 프로젝트 시작 시 인덱싱을 하여 파일을 비롯한 다양한 자원에 대한 빠른 검색 속도 HTML, CSS, JS, XML에 대한 강력한 기능 지원 자바, 스프링 부트 버전업에 맞춘 빠른 업데이트 실제로 네이버, 카카오, 라인, 쿠팡, 우아한형제들 다양한 IT 서비스 기업에선 현재 인텔리제이를 공식 IDE로 ..
[ToDo List using JPA] 2. Todo List 구현
1. 기본 설정 ToDo List 프로젝트의 기본 설정을 위한 작업들이다. // build.gradle dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.h2database:h2' compileOnly 'org.projectlombok:lombok:1.18.24' runtimeOnly 'com.h2database:h2' ann..
[Spring] 영속성 컨텍스트와 @Transactional 어노테이션
들어가기에 앞서 스프링 Todo List 프로젝트 중 JPA의 Dirty Checking 기능이 작동하지 않아 이유에 대해 함께 프로젝트를 진행 중이던 팀원에게 물어보니, @Transactional을 Update Service에 붙이지 않아서 Dirty Check가 이루어지지 않았다는 사실을 알려주었다. 단순히 @Transactional은 오류 발생 시 롤백을 위함으로 알고 있던 나에게는 충격으로 다가왔다. 그렇기에 @Transactional 어노테이션에 대해 제대로 정리를 해야겠다는 생각을 하게 되었다. @Transactional과 영속성 컨텍스트에 대해 알아보기 전에 먼저 JPA의 Dirty Checking 기능에 대해 알아보겠다. JPA Dirty Checking JPA는 Entity Manager..
[Spring] Open-In-View란?
Open-In-View는 Open-Session-In-View 또는 Open-EntityManager-In-View라고 불리기도 한다. Default값은 true이며, 이 경우에는 영속성 컨텍스트가 트랜잭션 범위를 넘어선 레이어까지 살아있다. API에서는 클라이언트에게 응답될 때까지, View에서는 View가 렌더링될 때까지 영속성 컨텍스트가 살아있다. 아래처럼 application.properties에서 false로 설정해주었다면, 영속성 컨텐스트는 트랜잭션을 종료할 때 같이 닫히게 된다. spring.jpa.open-in-view=false 위 그림은 OSIV(Open-Session-In-View)가 True일 때를 보여준다. 위 그림은 OSIV(Open-Session-In-View)가 False일 ..
[ToDo List using JPA] 1. CRUD와 JPA란?
CRUD란 ToDo List를 만들기에 앞서 CRUD에 대한 개념을 알아보고자 한다. CRUD는 컴퓨터 소프트웨어가 데이터를 다루는 가장 기본적인 방법 4가지를 의미한다. 각각 Create, Read, Update, Delete의 앞글자를 묶어서 일컫는 말이다. 1. Create (생성) 새로운 데이터를 생성하고, DB의 테이블에 이를 저장하는 것이다. SQL문의 Insert에 해당한다. 2. Read (읽기) DB의 테이블에 저장된 데이터를 읽어오는 것이다. SQL문의 Select에 해당한다. 3. Update (갱신) DB의 테이블에 저장 되어있는 데이터를 변경하는 것이다. SQL문의 Update에 해당한다. 4. Delete (삭제) DB의 테이블에 저장된 데이터를 삭제하는 것이다. SQL문의 De..
(스프링 기본) 9. 빈 스코프
이 글은 김영한 님의 스프링 핵심 원리 - 기본편 강좌 수강 후 정리한 글입니다. https://www.inflearn.com/course/스프링-핵심-원리-기본편/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 빈 스코프란? 스코프는 빈이 존재할 수 있는 범위를 뜻한다. 스프링이 지원하는 빈 스코프들은 다음과 같다. 1. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 2. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하..
(스프링 기본) 8. 빈 생명 주기 콜백
이 글은 김영한 님의 스프링 핵심 원리 - 기본편 강좌 수강 후 정리한 글입니다. https://www.inflearn.com/course/스프링-핵심-원리-기본편/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 빈 생명 주기 콜백 시작 스프링을 통해 객체의 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보자. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해보자. 이 NetworkClient는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 ..
(스프링 기본) 7. 의존관계 자동 주입
이 글은 김영한 님의 스프링 핵심 원리 - 기본편 강좌 수강 후 정리한 글입니다. https://www.inflearn.com/course/스프링-핵심-원리-기본편/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 다양한 의존관계 주입 방법 의존관계 주입 방법에는 4가지가 존재한다. 생성자 주입 수정자 주입 (setter 주입) 필드 주입 일반 메서드 주입 ● 생성자 주입 이름에서 알 수 있듯이 생성자를 통해서 의존관계를 주입받는다. 생성자 호출 시점에 딱 한 번 실행되는 것이 보장되기 때문에, 불변이나 필수 의존관계..
(스프링 기본) 6. 컴포넌트 스캔
이 글은 김영한 님의 스프링 핵심 원리 - 기본편 강좌 수강 후 정리한 글입니다. https://www.inflearn.com/course/스프링-핵심-원리-기본편/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 컴포넌트 스캔과 의존관계 자동 주입 시작하기 지금까지는 자바 코드의 @Bean을 활용하여 설정 정보에 직접 등록할 빈을 나열하였다. 만약 빈의 개수가 매우 많아지면 이 작업은 너무 귀찮고, 누락의 위험성 또한 존재한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔을 제공한..
(스프링 기본) 5. 싱글톤 컨테이너
이 글은 김영한 님의 스프링 핵심 원리 - 기본편 강좌 수강 후 정리한 글입니다. https://www.inflearn.com/course/스프링-핵심-원리-기본편/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 웹 애플리케이션과 싱글톤 스프링은 태생부터 기업용 온라인 서비스를 지원하기 위해 탄생하였다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 물론 웹이 아닌 일반 애플리케이션 개발도 충분히 가능하다. 보통 웹 애플리케이션은 위 그림처럼 여러 고객이 동시에 요청을 한다. 만약 세 명의 클라이언트가 동시에 ..