SPRING 15

[SPRING] Bean

정의 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트 즉 Ioc / DI 컨테이너가 관리하는 자바 객체 스프링 컨테이너는 빈의 생존 기간도 관리하며, 빈의 생존기간을 빈 스코프(Bean Scope)라고 정의함 빈 스코프 (Bean Scope) 종류 설명 singleton 컨테이너를 기동할 때 하나의 빈 인스턴스가 만들어지고, 이 후부터 해당 인스턴스를 공유하는 방식, 기본 스코프 prototype 컨테이너에 빈을 요청할 때마다 새로운 빈 인스턴스가 만들어짐, 멀티 스레드 환겨에서 오동작이 발생하지 말아야 하는 빈일 경우 사용 request HTTP 요청이 들어얼 때마다 새로운 빈 인스턴스가 만들어짐, 웹 어플리케이션 만들 때만 사용 가능 session HTTP 세션이 만들어질 때마다 새로운..

SPRING 2021.05.23

[SPRING] 컨테이너 (Container)

정의 인스턴스의 생명주기를 관리 생성된 인스턴스들에게 추가적인 기능을 제공 SPRING에서 컨테이너(DI / IOC 컨테이너)로 인스턴스 관리시 장점 인스턴스의 스코프를 제어할 수 있음 인스턴스의 생명주기를 제어할 수 있음 AOP방식으로 공통기능을 집어 넣을 수 있음 의존한느 컴포넌트 간의 결합도를 낮춰서 단위테스트를 쉽게 만듬 SPRING에서 제공하는 컨테이너 BeanFactory : IoC / DI에 대한 기본기능을 가지고 있음 ApplicationContext : BeanFactory의 모든 기능을 포함하며, 일반적으로 BeanFactory보다 추천됨 트랜잭션처리, AOP 등에 대한 처리를 할 수 있음, BeanPostProcessor, BeanFactoryPostProcessor 등을 자동으로 등..

SPRING 2021.05.23

[SPRING] JPA 연관관계

연관관계 매핑 구성 방향 : 단방향 / 양방향이 있음, 방향은 객체관계에서만 존재함, 테이블 관계같은 경우 항상 양방향 다중성 : 다대일, 일대다, 일대일, 다대다와 같은 다중성이 존재 연관관계의 주인 : 객체를 양방향 관계로 만들시, 주인을 지정해야함 연관관계는 객체들의 협력 공동체를 만들기 위하여 필요함, JPA에서 가장 중요한 것은 객체와 테이블을 어떻게 매핑되는지 이해하는 것이므로 연관관계는 중요함 테이블 중심의 설계의 문제 객체를 테이블에 맞추어서 모델링할 경우, 협력관계를 만드릭가 어려움 테이블은 외래키로 조인을 사용하여, 연관된 테이블을 찾고, 객체는 참조를 사용하여 연관된 객체를 찾음 테이블과 객체사이의 이러한 차이로 인한 제약조건이 생김 단방향 연관관계 객체 연관관계 회원 객체는 Memb..

SPRING 2021.05.19

[SPRING] 의존성 주입

의존성 개념 객체간의 관계를 뜻함, 의존관계 주입 개념 외부에서 객체를 생성해서 넣어주는 것 정의 필요한 객체를 setter나 constructor로 전달 받아서 넣어주는 것 일반적으로 의존성 주입은 SPRING에서 많이 사용되며, 주입방법도 여러가지가 있음 의존성 주입 방법 필드 주입 수정자 주입 생성자 주입 일반적으로 익숙한건 @Autorwired를 통한 필드 주입이 익숙할 듯 (필자는 생성자 주입을 선호함) 필드 주입 @Service public class UserService { @Autowired private UserRepository userRepository } 주입방법중 가장 간단함, 간단해서 막 추가가능(장점이라보기 어려움), 주입 필드를 Final로 정의 불가 수정자 주입 @Servi..

SPRING 2021.05.17

[SPRING] JPA 영속성 컨텍스트

정의 엔티티를 영구 저장하는 환경 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 보관하고 관리함 엔티티 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed) : 영속성 컨텍스트에 저장된 상태 준영속(detacted) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) : 삭제된 상태 //객체를 생성한 상태 (비영속) Member member = new member(); member.setId("member1"); member.setUsername("회원1"); //객체를 저장한 상태 (영속) em.persist(member); //엔티티를 영속성 컨텍스트에서 분리 (준영속) em.detach(membe..

SPRING 2021.05.16