Programming/Spring
-
서론 JPA를 공부하다보면 영속성 컨텍스트에 대해서 계속 듣게 된다. 수업을 통해, 어느정도 이해하긴 했지만 누군가에게 설명할 정도가 안되기에 이에 대해 조금 더 찾아보고자 한다. 영속성 컨텍스트 엔티티를 영구적으로 저장하는 환경을 의미한다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미 엔티티 매니저를 생성할 때, 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관..
[Spring] 영속성 컨텍스트서론 JPA를 공부하다보면 영속성 컨텍스트에 대해서 계속 듣게 된다. 수업을 통해, 어느정도 이해하긴 했지만 누군가에게 설명할 정도가 안되기에 이에 대해 조금 더 찾아보고자 한다. 영속성 컨텍스트 엔티티를 영구적으로 저장하는 환경을 의미한다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미 엔티티 매니저를 생성할 때, 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관..
2022.12.23 -
IOC (Inversion of control) DI(의존성 주입)을 이해하기 위해서는 IOC(제어의 역전)의 개념을 알고 있어야 한다. 프레임워크를 사용하지 않고 라이브러리를 활용해 개발자가 프로그램의 흐름을 제어할 수 있다. 스프링에서는 이런 프로그램의 흐름을 개발자가 아닌 프레임워크가 주도하게 된다. 즉 객체의 생성, 생명주기 관리 등을 컨테이너가 맡아서 하는 것을 의미한다. 제어권이 컨테이너로 넘어가게 되고, 이것을 제어권의 흐름이 바뀌었다고 하여 제어의 역전이라고 한다. 제어권이 컨테이너로 넘어옴으로써 DI(의존성 주입), AOP(관점 지향 프로그래밍) 등이 가능하게 된다. DI(Dependency Injection) 의존성 주입은 객체간의 의존성을 자신이 아닌 외부에서 주입하는 것을 의미한다...
[Spring] DI와 IOCIOC (Inversion of control) DI(의존성 주입)을 이해하기 위해서는 IOC(제어의 역전)의 개념을 알고 있어야 한다. 프레임워크를 사용하지 않고 라이브러리를 활용해 개발자가 프로그램의 흐름을 제어할 수 있다. 스프링에서는 이런 프로그램의 흐름을 개발자가 아닌 프레임워크가 주도하게 된다. 즉 객체의 생성, 생명주기 관리 등을 컨테이너가 맡아서 하는 것을 의미한다. 제어권이 컨테이너로 넘어가게 되고, 이것을 제어권의 흐름이 바뀌었다고 하여 제어의 역전이라고 한다. 제어권이 컨테이너로 넘어옴으로써 DI(의존성 주입), AOP(관점 지향 프로그래밍) 등이 가능하게 된다. DI(Dependency Injection) 의존성 주입은 객체간의 의존성을 자신이 아닌 외부에서 주입하는 것을 의미한다...
2022.12.22 -
DTO란? DTO(Data Transfer Object)는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체를 의미한다. DAO란? DAO(Data Access Object)는 데이터베이스의 data에 접근하기 위한 객체를 의미한다. DataBase에 접근하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용한다. DTO 사용 이유 1. 엔티티 내부 구현을 캡슐화할 수 있다. 엔티티란 도메인의 핵심 로직과 속성을 가지고 있고, 실제 DB의 테이블과 매칭되는 클래스이다. 그렇기 때문에 엔티티가 setter를 갖게 된다면, controller와 같은 비즈니스 로직과 크게 상관없는 곳에서 자원의 속성이 실수로라도 변경될 수 있다. 또한 엔티티를 UI계층에 노출..
[Spring] DTODTO란? DTO(Data Transfer Object)는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체를 의미한다. DAO란? DAO(Data Access Object)는 데이터베이스의 data에 접근하기 위한 객체를 의미한다. DataBase에 접근하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용한다. DTO 사용 이유 1. 엔티티 내부 구현을 캡슐화할 수 있다. 엔티티란 도메인의 핵심 로직과 속성을 가지고 있고, 실제 DB의 테이블과 매칭되는 클래스이다. 그렇기 때문에 엔티티가 setter를 갖게 된다면, controller와 같은 비즈니스 로직과 크게 상관없는 곳에서 자원의 속성이 실수로라도 변경될 수 있다. 또한 엔티티를 UI계층에 노출..
2022.12.22 -
서론 Annotation은 정말 많다. 하지만 대부분의 Annotation 이름들이 굉장히 직관적이기에 아직까지는 어렵지 않다. 오늘은 컴포넌트와 관련된 Annotatino들과 Controller단에서 자주 사용하는 Annotatino들을 정리해보자. Spring의 대표적인 Annotation @Component 개발자가 생성한 클래스를 Spring의 Bean으로 등록할 때 사용하는 Annotation이다. Spring은 해당 Annotation을 보고 Spring의 Bean으로 등록한다. @Bean @Bean Annotation은 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean으로 등록할 때 사용한다. @Controller Spring에게 해당 클래스가 Controller의 역할을 한다..
[Spring] Annotation (2)서론 Annotation은 정말 많다. 하지만 대부분의 Annotation 이름들이 굉장히 직관적이기에 아직까지는 어렵지 않다. 오늘은 컴포넌트와 관련된 Annotatino들과 Controller단에서 자주 사용하는 Annotatino들을 정리해보자. Spring의 대표적인 Annotation @Component 개발자가 생성한 클래스를 Spring의 Bean으로 등록할 때 사용하는 Annotation이다. Spring은 해당 Annotation을 보고 Spring의 Bean으로 등록한다. @Bean @Bean Annotation은 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean으로 등록할 때 사용한다. @Controller Spring에게 해당 클래스가 Controller의 역할을 한다..
2022.12.08 -
서론 Spring Boot에서는 다양한 Annotation을 통해 사용자의 개발 환경을 편리하게 만들어준다. 하지만 내가 사용 중인 Intellij에서 '@'을 통해 Annotation의 종류를 본 적이 있는데 많아도 너무 많아서 놀란 적이 있다. Spring Boot를 통해 개발하다보면 많은 Annotation을 만나고 사용할 것이고 이들을 지속적으로 정리하고자 한다. 우선 현재까지 내가 사용했던 것들을 위주로 정리해보자. Annotation이란? Annotation은 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 한다. Annotation을 활용하여 Spring Framework는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter나 setter를..
[Spring] Annotation (1) (Lombok, JPA)서론 Spring Boot에서는 다양한 Annotation을 통해 사용자의 개발 환경을 편리하게 만들어준다. 하지만 내가 사용 중인 Intellij에서 '@'을 통해 Annotation의 종류를 본 적이 있는데 많아도 너무 많아서 놀란 적이 있다. Spring Boot를 통해 개발하다보면 많은 Annotation을 만나고 사용할 것이고 이들을 지속적으로 정리하고자 한다. 우선 현재까지 내가 사용했던 것들을 위주로 정리해보자. Annotation이란? Annotation은 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 한다. Annotation을 활용하여 Spring Framework는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter나 setter를..
2022.12.08 -
스프링 프레임워크(Spring Framework)란? 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크 스프링 프레임워크의 특징 경량 컨테이너 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. POJO 기반의 구성 POJO는 Plain Old Java Object의 약어이며 오래된 방식의 간단한 자바 객체라는 말이다.즉, 우리가 자바에서 개발하는 지극히 평범한 객체를 POJO라고 한다. 다만, POJO는 특정 규약과 특정 환경에 종속되어서는 안되고 객체지향 설계를 잘 지켜야한다는 조건이 있다. DI를 통한 객체 간의 관계 구성 스프링은 그 자체가 구조를 설계할 수 있어서 개발..
[Spring] Spring Framework란?스프링 프레임워크(Spring Framework)란? 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크 스프링 프레임워크의 특징 경량 컨테이너 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. POJO 기반의 구성 POJO는 Plain Old Java Object의 약어이며 오래된 방식의 간단한 자바 객체라는 말이다.즉, 우리가 자바에서 개발하는 지극히 평범한 객체를 POJO라고 한다. 다만, POJO는 특정 규약과 특정 환경에 종속되어서는 안되고 객체지향 설계를 잘 지켜야한다는 조건이 있다. DI를 통한 객체 간의 관계 구성 스프링은 그 자체가 구조를 설계할 수 있어서 개발..
2022.12.08 -
서론 @Transactional 어노테이션을 공부하다보니 트랜잭션을 이해해야 하고 또 이를 공부하다보니 변경감지 라는 내용까지 학습하게 되었다. 오늘은 그 중 @Transactional 어노테이션에 대해서 알아보자. 우선 학습할 것은 트랜잭션이다. 트랜잭션(Transaction)이란? 데이터베이스 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 더 이상 쪼개질 수 없는 최소 단위의 연산이다. 트랜잭션의 4가지 특성(ACID) 원자성(Automicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (All or Nothing) 일관성(Consistency) 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜..
[Spring] Transactional서론 @Transactional 어노테이션을 공부하다보니 트랜잭션을 이해해야 하고 또 이를 공부하다보니 변경감지 라는 내용까지 학습하게 되었다. 오늘은 그 중 @Transactional 어노테이션에 대해서 알아보자. 우선 학습할 것은 트랜잭션이다. 트랜잭션(Transaction)이란? 데이터베이스 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 더 이상 쪼개질 수 없는 최소 단위의 연산이다. 트랜잭션의 4가지 특성(ACID) 원자성(Automicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (All or Nothing) 일관성(Consistency) 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜..
2022.12.02 -
1.Component란? ● 싱글톤 클래스 빈을 생성하는 어노테이션이다. @Controller @Service @Repository 어노테이션 또한 이에 포함된다. ● @Component 어노테이션은 선언적(Declarative)인 어노테이션이다. ● 즉, 패키지 스캔에게 @Component 어노테이션은 "이 클래스를 정의했으니 스프링 빈으로 등록해줘"라는 의미를 가진다. ● @Controller @Service @Repository 어노테이션이 사용된 곳은 동일하게 스프링 빈으로 등록된다. ● 위 3개의 어노테이션은 특정한 기능에 대한 @Component의 구체화된 형태 2.Controller란? ● Presentation Layer ● 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스에 사용한다...
[Spring] Controller Service Repository Annotation1.Component란? ● 싱글톤 클래스 빈을 생성하는 어노테이션이다. @Controller @Service @Repository 어노테이션 또한 이에 포함된다. ● @Component 어노테이션은 선언적(Declarative)인 어노테이션이다. ● 즉, 패키지 스캔에게 @Component 어노테이션은 "이 클래스를 정의했으니 스프링 빈으로 등록해줘"라는 의미를 가진다. ● @Controller @Service @Repository 어노테이션이 사용된 곳은 동일하게 스프링 빈으로 등록된다. ● 위 3개의 어노테이션은 특정한 기능에 대한 @Component의 구체화된 형태 2.Controller란? ● Presentation Layer ● 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스에 사용한다...
2022.12.01