반응형
제육's 휘발성 코딩
반응형
[Spring JPA] 고급 매핑 (상속 관계 매핑, 매핑 정보 상속)
🔷 Spring/JPA 2022. 4. 16. 23:03

목차 상속관계 매핑 @MappedSuperclass 예제 상속관계 매핑 관계형 데이터베이스는 상속 관계가 없고, 슈퍼타입-서브타입 관계가 있다. 상속관계 매핑이란 객체의 상속과 DB의 슈퍼타입-서브타입 관계를 매핑하는 것을 의미한다. 조인전략(각각 테이블로 변환), 단일 테이블 전략, 구현 클래스마다 테이블 전략(서브타입 테이블로 변환) 기법이 있다. 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE") : 부모클래스에서 컬럼명 설정 @DiscriminatorValue("X..

[Spring JPA] 다양한 연관관계 매핑 (다대일, 일대다, 다대다, 일대일)
🔷 Spring/JPA 2022. 4. 16. 21:04

목차 연관관계 매핑 시 고려사항 3가지 다대일 일대다 일대일 다대다 예제 연관관계 매핑 시 고려사항 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 즉, 방향의 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 (단방향) 양방향을 만드려면 단방향을 2개 만드는 방식 연관관계 주인 외래키를 관리하는 곳을 연관관계 주인으로 관리하자. 주인의 반대편은 단순 조회만 가능하도록 설계하는 것이 바람직하다. 다대일 [N:1] 다대일 단방향 가장 많이 사용하는 연관관계이다. 자세한 내용은 이전 포스팅을 참고하자. 다대일 양방향 외래 키가 있는 쪽이 연관관계의 주인이고 양쪽을 ..

[Spring JPA 활용1] - 프로젝트 환경 설정
🔷 Spring/JPA 활용 I 2022. 4. 15. 16:08

JPA 활용 1 - 프로젝트 환경 설정 스프링 부트와 JPA를 통해 생산성 높은 웹 애플리케이션을 개발해보자. 도메인 모델 설계, 엔티티 설계, 테이블 설계를 하고 ORM으로 JPA를 매핑하는 과정을 거쳐 핵심 비즈니스 로직을 개발해보자. 프로젝트 생성 https://start.spring.io/ 에서 프로젝트 생성 plugins { id 'org.springframework.boot' version '2.6.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { c..

[Spring] 스프링 핵심 원리 이해 (OCP, DIP, 관심사 분리)
🔷 Spring/basic 2022. 4. 13. 21:54

스프링 핵심 원리 이해 - 예제 프로젝트 생성 https://start.spring.io/ 에서 별도의 Dependency 없이 프로젝트를 생성하자. 비즈니스 요구사항 회원 회원 가입 및 조회 회원 등급 (일반, VIP) 자체 DB를 사용하며, 외부 DB 연동 가능성 존재 주문과 할인 정책 회원은 상품 주문 가능 회원 등급에 따라 할인 정책 적용 모든 VIP는 1000원 할인해주는 고정 할인 금액 적용 (할인 내용 변경 가능성 존재) 요구사항을 보면 회원 데이터, 할인 정책 등 당장 결정하기 어려운 부분이 있다. 앞에서 배운 객체지향 설계 방법을 통해 인터페이스만 만들고 구현체를 갈아끼울 수 있도록 설계해보자. 우선 스프링의 기능을 사용하지 않고 이후에 변경해보자. 도메인 설계 회원 도메인 협력 관계는 ..

[Spring] 스프링 부트 예제 - 회원 관리
🔷 Spring/basic 2022. 4. 13. 12:57

회원 관리 예제 웹 애플리케이션 계층 구조를 보고 백엔드 관점에서 회원 관리 예제를 적용해보자. 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 (회원, 주문, 쿠폰 등 데이터베이스에서 저장하고 관리되는 모델) 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 데이터 저장소가 아직 선정되지 않음 클래스 의존 관계는 데이터베이스가 선정되지 않았다는 가정이므로, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계하자. 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 회원 도메인과 리포지토리 만들기 pu..

[Spring] 스프링 부트 동작과정 (스프링 컨테이너)
🔷 Spring/basic 2022. 4. 12. 12:18

스프링 웹 개발 기초 프로젝트 생성 https://start.spring.io/ 에서 프로젝트를 GENERATE하고 IDE에서 임포트하자. 라이브러리 Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. 스프링 부트 라이브러리 spring-boot-starter-web spring-boot-starter-tomcat spring-webmvc springboot-starter-thymeleaf spring-boot-starter(공통) : 스프링 부트 , 스프링 코어, 로깅 기능 웹 개발에는 크게 정적 컨텐츠, MVC와 템플릿 엔진, API 세 가지로 나눌 수 있다. 스프링 부트는 static/index.html 을 올려두면 Welcome page 기능을 제공한다. 정적 컨텐츠 HTML 파일을 ..

[MVC-2] 스프링 로그인 - 필터, 인터셉터
🔷 Spring/MVC 2022. 4. 11. 23:38

로그인 처리 - 필터, 인터셉터 서블릿 필터 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다는 요구사항을 살펴보자. 로그인하지 않은 사용자도 URL을 알고 있다면 직접 호출하여 관리 화면에 들어올 수 있다. 이 부분을 해결하려면 등록, 수정, 삭제, 조회 등등 상품관리의 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다. 이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사라고 한다. 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 HTTP의 헤더나 URL의 정보가 필요한데, 이 부분을 HttpServletRequest를 제공하는 서블릿 필터나 스프링 인터셉터를 사용하는 것이 바람직하다. 서블릿 필터 흐름 HTTP 요청 - WAS - 필터 - 서블릿 - ..

[MVC-2] 스프링 로그인 처리 - 세션 , 쿠키
🔷 Spring/MVC 2022. 4. 11. 18:09

로그인 처리 - 쿠키, 세션 로그인 요구 사항 홈 화면 - 로그인 전 회원 가입 로그인 홈 화면 - 로그인 후 사용자 이름 상품 관리 로그아웃 보안 요구사항 로그인 사용자만 상품에 접근하고, 관리 로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면 이동 회원 가입, 상품 관리 패키지 구조 설계 domain item member login web item member login 도메인이 가장 중요하다. 도메인은 화면, UI, 기술 인프라 등등의 영역을 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 의미한다. 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다. 즉, web은 domain을 의존하지만, domain은 web을 의존하지 않도록 설계하는 것이 중요하다...

반응형
반응형