728x90
반응형

SpringBoot 19

연관관계 매핑(양방향)

✅ 양방향 매핑이란? 객체의 연관관계 중 하나인 양방향 매핑은, 사실상 단방향 매핑이 두번 이루어진 것이다. 즉, 개념적으로 두 개의 단방향 매핑을 추상적으로 양방향 매핑이라 칭하는 것이다. ✅ 양방향 연관관계 매핑의 필요성 테이블과 객체를 비교해보자. 테이블에서는 외래 키 하나로 두 테이블의 연관관계를 확인할 수 있다. 외래 키를 가지고 조인하면 두 테이블간 데이터의 결합과 접근성이 자유롭다. 즉, 외래 키 하나만으로 한 컬럼의 연관된 데이터를 획득할 수 있다. 하지만 객체에서는? 객체를 탐방하려면 참조가 쌍방으로 존재해야 한다. 참조가 양방향으로 존재해야 참조와 역참조가 가능한 구조라는 것이다. 이런 패러다임의 차이를 극복하기 위해 양방향 매핑을 한다. 하지만, 엔티티 연관관계를 설정할 때 우선 단방..

Dev/Spring 2023.11.21

연관관계 매핑(단방향)

✅ 연관관계 매핑의 필요성 모델링의 두 방식의 차이점을 비교하며 연관관계의 필요성을 알아보자. ✅ 테이블 중심 모델링 ![Untitled] 테이블 연관관계에 맞추어 객체를 모델링 해보자 🌱 엔티티 매핑 참조 대신에 외래키를 그대로 사용하여 다음과 같이 Member 와 Team 을 작성할 수 있다. @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private Long teamId; ... } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; ... } 🌱 엔티티 다루기 위와 같이 작성..

Dev/Spring 2023.11.21

Ch06. API URL, Project Configuration

Overview EndPoint와 Request/Reply 데이터를 설계하자. 협업을 편리하게 진행하기 위한 API 명세서를 작성하자. API란 Appliation Programming Interface(API) 즉, Application을 Programming할 때 사용되는 Interface를 말한다. 소프트웨어 사이에 복잡한 것들을 감추고, 추상화를 통해 손 쉽게 마이그레이션 혹은 응용을 할 수 있게끔 하는 도구의 일종이다. REST API 웹 어플리케이션에서는, REST API를 자주 사용한다. REST API란 말 그대로 RESTful한 API를 일컫는다. REST Representational State Transfer 의 약자로, 자원을 이름으로 구별하여 자원의 상태(state)를 주고 받는 ..

Ch05. SQL

Overview 요구사항에 맞게 쿼리를 작성하는 방법에 대해 고민하고, 이를 통해 쿼리를 만들어보자. Entity-Relationship Diagram Requirements 진행 중/완료 미션을 모아서 보는 페이지 SELECT * FROM Mission WHERE mission_status = 'IN_PROGRESS' OR mission_status = 'COMPLETED';한 유저에게 할당된 미션에 대해, 진행 중 혹은 진행 완료된 미션을 모아서 볼 수 있는 쿼리 리뷰 작성하는 페이지 INSERT INTO Review (grade, title, content, reply, visitDate, store_id, user_id) VALUES (:grade, :title, :c..

준영속과 변경감지

Intro 본 포스팅에서는 준영속 엔티티를 수정하는 두 가지 방법에 대해 다룬다. 준영속 엔티티란? 엔티티의 생명주기에 따른 속성 분류는 다음과 같다. 비영속 영속성 컨텍스트와 연관이 없는 상태. 그저 생성만 된 객체를 의미한다. 영속 영속성 컨텍스트가 관리하는 객체 준영속 영속성 컨텍스트가 관리했던 객체. 즉, Database에 한번 들어갔다 나온 객체 (식별자 존재) 삭제 Database에서 삭제된 객체 위의 설명과 같이 준영속 엔티티란 영속성 컨텍스트가 더이상 관리하지 않는 객체를 의미한다. 하지만 데이터베이스에 한번 저장되었기에 식별자가 존재한다. 식별자를 이용해 임의의 새로운 객체를 생성한 경우에도 준영속 엔티티라 칭한다. 이런 준영속 엔티티의 값을 변경하는 방법에는 변경감지/병합 두 가지 방법..

Dev/Spring 2023.10.25

[스프링 핵심 원리] Bean Scope

Intro 본 카테고리는 Inflearn 김영한 강사님의 스프링 핵심 원리 강의를 수강하며 이해하고 학습한 내용을 정리한 내용으로 구성되어 있다. 본 포스팅에서는 빈 스코프, 즉 빈이 존재할 수 있는 다양한 범위를 예제들과 함께 다룬다. Bean Scope? 스프링은 빈에 대해 다음과 같은 다양한 스코프를 지원한다. 싱글톤 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. Ref 프로토타입 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 기본 값인 싱클톤 스코프는 항상 같은 인스턴스를 반환해주는 특징을 갖고 있다. 하지만 가벼운 기능 테스트 등에 사용하기 위해서는 매번 새로운 빈을 반환해야 하는 ..

Dev/Spring 2023.09.30

[스프링 핵심 원리] @Qualifier, @Primary와 Bean 우선순위

Intro 본 카테고리는 Inflearn 김영한 강사님의 스프링 핵심 원리 강의를 수강하며 이해하고 학습한 내용을 정리한 내용으로 구성되어 있다. 본 포스팅에서는 빈 조회 시 중복된 빈들에 대해 우선순위를 적용해 보다 쉽게 빈을 찾을 수 있는 방법에 대해 다룬다. @Autowired @Autowired 어노테이션은 기본적으로 Type으로 빈을 조회하여 DI한다. 이는 ac.getBean(DiscountPolicy.class) 와 유사하게 동작하는 것으로 볼 수 있다. 즉, interface인 DiscountPolocy.class로 조회 시, 해당 interface를 구현한 FixDiscountpolicy.class와 RateDiscountPolicy 두 개가 스프링 빈으로 모두 등록되어 있으면 문제가 발..

Dev/Spring 2023.09.26

[스프링 핵심 원리] ComponentScan, 의존 관계 자동주입

이전 포스팅 : [스프링 핵심 원리] Singleton Pattern of Spring Container Intro 본 카테고리는 Inflearn 김영한 강사님의 스프링 핵심 원리 강의를 수강하며 이해하고 학습한 내용을 정리한 내용으로 구성되어 있다. 본 포스팅에서는 Spring의 @ComponentScan을 이용한 스프링 빈 등록 방법, 그리고 @Autowired를 이용한 의존 관계 자동주입에 대해 다룬다. Previous Code (AppConfig.class) @Configuration // apply spring container public class AppConfig { @Bean public MemberService memberService() { System.out.println("call..

Dev/Spring 2023.09.26

[스프링 핵심 원리] Spring Container & Bean

이전 포스팅 : [스프링 핵심 원리] Spring 적용 Intro 본 카테고리는 Inflearn 김영한 강사님의 스프링 핵심 원리 강의를 수강하며 이해하고 학습한 내용을 정리한 내용으로 구성되어 있다. 본 포스팅에서는 Spring Container에서 Bean이 저장되었는지 확인할 수 있는 Testcode를 작성하는 부분을 다룬다. Testcode dir src > test > java > hello > core > beanfind AnnotationConfigApplicationContext public class ApplicationContextBasicFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationC..

Dev/Spring 2023.09.22

[스프링 핵심 원리] Spring 적용

이전 포스팅 : [스프링 핵심 원리] SoC와 DI Intro 본 카테고리는 Inflearn 김영한 강사님의 스프링 핵심 원리 강의를 수강하며 이해하고 학습한 내용을 정리한 내용으로 구성되어 있다. 본 포스팅에서는 객체지향 설계원칙을 적용하여 개발한 순수 자바코드에 Spring을 도입하는 과정을 담았다. 기존 코드 package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; import hello.core.member.MemberServiceImpl; import hello.core.mem..

Dev/Spring 2023.09.20
728x90
반응형