스프링,스프링부트 6

@Transactional

@Transactional 이란? - 서비스에서 사용되는 DB접근 기술 마다 Transaction을 관리해주는 방법이 다른데 이를 추상화하여 Spring AOP 기능을 통하여 Transaction을 관리하는 Spring의 트랜잭션 통합 관리 기능 - Transaction 관리 방법을 Bean으로 등록하여서 AOP를 이용하여 DB접근 기술에 Transaction을 지정해주는 방법을 최상단에서 관리하는 것을 선언적 트랜잭션 (declarative transction) 이라고 한다. 이와 반대로 개별적으로 DB접근 기술을 직접 코드 안에서 사용하는 방법은 프로그램에 의한 트랜잭션 ( programmatic transaction) 이라고 한다. @Transactional 사용 방법 - DB 접근 방법에 따른 T..

Servlet의 이해

WebServer와의 Http 통신을 위해서는 Servlet의 역할이 필요하다. @ServletComponentScan - 스프링부트에서는 서블릿을 직접 등록하여 사용할 수 있도록 @ServletComponentSacn 어노테이션을 지원한다. 해당 어노테이션을 main 스레드에 등록하여 웹 서버를 올릴 시에 개발자가 Servlet을 등록할 수 있으며 @SpringBootApplication 어노테이션을 통해 등록한 서블릿을 사용할 수 있다. @HttpServletRequest - Servlet은 Http 요청 메세지를 편리하게 사용할 수 있도록 개발자 대신에 Http 요청 메시지를 파싱해준 후 그 결과 값을 HttpServletRequest 객체에 담아서 제공한다. - 요청에 대한 여러 정보들을 설정하여..

람다식 (Lambda)

람다식이란? - 자바의 함수적 프로그래밍을 위한 자바8 부터 제공해주는 기능 • 기본 문법 (타입 매개변수) -> { 실행코드 } 형태로 작성된다. • 하나의 매개 변수만 있는 경우 - 매개변수 괄호 생략해도 사용 가능 a-> { 실행코드 } • 매개변수가 하나도 없는 경우 - 빈 괄호 반드시 사용한 후 사용가능 () -> { 실행코드} • 중괄호 {} 에 retrun 문만 있을 경우 중괄호 제거하고 사용 가능 EX) (x,y) -> x + y @FunctionalInterface (함수적 인터페이스) - 두 개 이상의 추상적 메소드가 선언된 인터페이스는 람다식을 이용해서 구현 객체 생성할 수 없다. - 두 개 이상의 추상 메소드가 선언되지 않도록 컴파일러가 체킹해주는 기능 - 람다식은 하나의 메소드를 ..

DAO, DTO, VO, Entity

1.DAO (Data Access Object) - DB에 접근 하는 객체 - Service와 DB를 연결하는 고리 역할 - JPA에서 Repository 인터페이스가 DAO 2. DTO(Data Transfer Object) - 오직 데이터 교환을 위한 객체 - DB에서 데이터를 얻어 Service나 Controller에게 전달하는 객체 - getter,setter로만 구성 3. VO (Value Object) - 읽기 전용 (Read-Only)로 사용되는 객체 4. Entity Class - 실제 DB의 테이블과 매칭 되는 클래스 - java.persistence 라이브러리 사용 - @Entity를 사용하여 해당 객체가 Entity Class임을 증명

SpringBoot를 이용한 Rest API -1

Spring Framework 개요 - Java 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션의 전 영역을 포괄하는 범용적인 프레임 워크 특징 1. 컨테이너 역할 - Java 객체들이 컨테이너에 담겨 관리된다 (Life Cycle관리) - 필요한 객체를 가져와 사용할 수 있다 2. DI(Dependency Injection) 지원 - 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있다 3. AOP(Aspect Oriented Programming)지원 - 복잡한 기술들을 간단하게 Spring에서 사용할 수 있도록 사용하게 해줄 수 있는 프로그래밍 기법 4. POJO(Plain Old Java Object) 지원 - 특정한 인터페이스를 구현하거나 ..

6/7 스프링가이드 정리

1.디렉토리 구조 1-1 Layer - 프로젝트 이해가 낮아도 전체적인 구조를 빠르게 파악 가능 - 작성 하고자하는 계층이 명확할 경우 빠르게 개발 가능 - 각 레이어 별로 수십개의 클래스들이 존재하여 코드 파악이 어 려우며 코드의 응집력이 떨어짐 1-2 Domain - 관련된 코드들이 응집해 있음 - 디렉토리 구조를 통해 도메인을 이해할 수 있다 - 도메인 지식 없어 이해하기 어려움 - 각 계층을 구분하기 위한 논의가 필요 domain : 도메인을 담당 (API,Service 로직) - api : 컨트롤러 클래스들이 존재 - domain : 도메인 엔티티에 대한 클래스로 구성 특정 도메인에 만 속하는 Embeddable,Enum 같은 클래스 구성 - dto : 주로 Request,Response 객체들..