Spring 20

Spring Boot 와 JPA 활용

Spring Boot란? Spirng Boot는 복잡하고 어려운 Spring 기술을 간결하고 쉽게 만들 수 있게 해주는 기술이다. JPA이란? 강력한 ORM표준 기술입니다. Spring Boot와 JPA을 사용하는 것일까? Spring Boot와 JPA의 기술을 합치면 높은 개발 생성을 유지하면서 빠르게 웹 어플리케이션을 개발할 수 있다. 그래서 자바 진형에서는 이 두 어플리케이션을 개발하는 것이 현재 세계적인 추세이다. 이번 강의 목표 Spring Boot와 JPA을 사용해서 실무에서 웹 어플리케이을 제대로 개발 할 수 있도록 하는 것이 목표이다. 이번 강의의 특징 처음부터 끝까지 코딩을 하는 것이다. 그냥 코딩을 하면서 따라오면 된다. 모르는 코딩이라도 개발자는 따라 하는 것만으로도 몸이 익히는 것이..

Spring 2023.06.26

프록시 패턴과 프록시 서버

프록시 패턴과 프록시 서버 프록시 패턴 특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 패턴 특정 객체에 접근하기 전에 프록시 객체를 먼저 지난 후 접근하게 한다. 초기화 지연, 접근 제어, 로깅, 캐싱 등 다양하게 응용하여 사용할 수 있다. 위키백과 프록시 패턴 사용전 public class Clinet { public static void main(String[] args) { GameService gameSErvice = new GameService(); gameService.startGame(); } } public class GameService { public void startGame() { System.out.println("게임을 시작합니다."); } } 프록시 패턴 사용 후 ..

Spring 2022.12.16

Spring boot Security 사용법

Spring boot Security 사용법 개발 환경 java 11 gralde 2.7.3 build.gralde 에 Security 추가 더보기 implementation 'org.springframework.boot:spring-boot-starter-security' Spring Security란? Spring 기반의 애플리케이션의 보안(인증과 권한, 인가)을 담당하는 스프링 하위 프레임워크이다. 인증과 권한에 대한 부분을 Filter 흐름에 따라 처리하고 있다. Filter는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller사이에 위치한다는 점에서 적용 시기의 차이가 있다. Spring S..

Spring 2022.11.03

고급 매핑 - 상속관계 매핑, @MappedSuperclass

상속관계 매핑과 @MappedSuperclass에 대해서 알아보도록 하겠다. 상속관계 매핑 관계형 데이터베이스는 상속 관계가 없다 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑한다. 슈퍼 타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 3가지가 있다 1. 각각 테이블로 변환 -> 조인 전략 2. 통합 테이블로 변환 -> 단일 테이블 전략 3. 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 조인 전략 엔티티마다 모두 테이블로 만들어주고 부모의 기본키를 기본키 + 외래 키로 사용함. 그래서 조회할 때 조인을 사용함. 다만 객체는 타입이 있는데 테이블은 타입에 개념이 없으니 따로 컬럼을 추가해줘야..

Spring 2022.11.01

연관관계 매핑 고려사항 3가지

연관관계 매핑 고려사항 3가지로 뽑는다면 다중성, ( 단방향, 양방향), 연관관계 주인으로 뽑을 수 있다 1. 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 2. 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인이 가능하다 사실 방향이라는 개념이 없다 객체 참조 용 필드가 있는 쪽으로만 가능하다 한쪽만 참조하면 단방향이다 양쪽이 서로 참조하면 양방향이다. 사실 양방향이라는 것은 별로 사용하지도 않아 그냥 알고만 있는 것이 좋다 3. 연관관계 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A -> B, B -> A 처럼 참조가 2군데이다 객체 양방향 관계는 참조가 2군데 있다. 둘 중 테이블의..

Spring 2022.10.25

연관관계 매핑 기초

목표 1. 객체와 테이블 연관관계의 차이를 이해 2. 객체의 참조와 테이블의 외래 키를 매핑 용어를 알고 가자 방향 (Direction) : 단방향, 양방향 다중성 (Multiplicity) : 다대일 (N:1), 일대다 (1:N), 일대일 (1:1), 다대다(N:M) 연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요하다 연관관계가 필요한 이유가 무엇일까? 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다 객체를 테이블에 맞추어 모델링 테이블 연관관계를 보면 Member가 N이고 Team이 1 이다. N:1 관계 -> 다대일 관계 -> Member 대 Team 이라 보면된다. Member Class @Entity public class Member { @Id @..

Spring 2022.10.19

@Transactional

스프링에서 @Transactional 을 이용하여 트랜잭션 처리를 하는 방법 DB와 관련된, 트랜잭션이 필요한 서비스 클래스 혹은 메서드에 @Transactional 어노테이션을 달아주면된다. 클래스, 메서드 모두에 @Transactional 어노테이션을 붙이면 메서드 레벨의 @Transactional 선언이 우선 적용된다. java //게시판의 게시글을 삭제하는 메서드 @Transactional public void removeBoard(Long id) throws Exception { replyDAO.removeAll(id); //삭제할 게시글의 답글 삭제 boardDAO.deleteBoard(id); //게시글 삭제 } @Transactional이 붙은 메서드는 메서드가 포함하고 있는 작업 중에 하..

Spring 2022.09.29

변경 감지와 병합(merge)

변경 감지와 병합(merge) JPA는 영속성 context에 테이블 형태의 1차 캐시를 두고 엔티티를 저장해서, Transaction commit 시, 1차 캐시의 영속된 값과 현재 entity값을 비교하여 변경이 된 것을 알아서 적용해준다. 준영속 상태 영속 상태였다가 더는 영속성 컨텍스트가 관리하지 않는 상태 영속성 컨텍스트로부터 분리된 상태 준영속 상태를 만드든 3가지 방법 1. em.detach(entity) : 특정 엔티티만 준영속 상태로 전환 2. em.clear() : 영속성 컨텍스트를 완전히 초기화 3. em.close() : 영속성 컨텍스트를 종료 준영속 엔티티 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다 엔티티의 데이터를 가지고 있는 클라이언트 사이드로 넘기기 위한 객체 준영..

Spring 2022.09.29

빈 생명주기 콜백

빈 생명주기 콜백이란? 스프링 프로젝트가 시작될 때 DB연결, 소켓연결, 기타 등등 시간이 걸리기에 미리 연결을 한 뒤 애플리케이션 종료시점에 연결을 종료해야하는 경우 객체의 초기화 및 종료 작업을 해야한다. 스프링 빈의 라이플 사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸전 콜백 →스프링 종료 초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백 : 빈이 소멸되기 직전에 호출 객체의 생성과 초기화를 분리하자 생성자는 필수 정보를 받아 메모리 할당후 객체를 생성하는 책임을 가진다 그리고 초기화는 이렇게 생성된 값들을 활용해 기타 무거운 작업들을 수행한다. 그렇기에 초기화를 묶는 것은 SRP(단일 책임 원칙)적으로도 과한 책..

Spring 2022.07.30

의존관계 자동 주입

의존 관계 주입 4가지 1. 생성자 주입 2. 수정자 주입 (setter) 3. 필드 주입 4. 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법 특징 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용 생성자가 딱 1개만 있으면 @Autowired를 제외 시킬수 있다. @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberReposit..

Spring 2022.07.24