이 글은 노마드코더의 [ReactJS로 영화 웹 서비스 만들기]를 수강하며 정리한 글입니다.

 

 

⚛️ 기본 환경: IDE: VS code, Language: React

 

 

이어진 글: [ReactJS_영화_웹] #7 MOVIE APP

 

 

기존 Home.js: 왼쪽 화면이 세로로 반복 

기존 Detail.js: 오른쪽 화면(영화 제목 클릭 시, 이동)

 

 

슬라이드쇼를 만들기 위한 라이브러리 설치

npm i react-slick

 

* 간단한 사용방법은 react-slick 사이트 참조

 

Neostack

The last react carousel you will ever need

react-slick.neostack.com

 

슬라이드쇼가 적용된 Home.js

 

Home.js

 

home.css

 

Movie.js

 

Movie.module.css

 

 

 

소스 코드

🔗 HJ0216/TIL/REACT

 

참고 자료

 

인프런 React 강의 듣고 사이트 만들기 _ Front 작업 08. react-slick으로 슬라이드 만들기 (customPaging 옵

customPaging 옵션을 이용한 작업방식입니다. 슬라이드 2개로 페이징을 구현하려면 새로 작성한 글을 참고해주세요! 사진첩 작업을 하기위해 react-slick 라이브러리를 활용해보겠습니다. 그냥 slick을

okayoon.tistory.com

 

[React] React slide 구현하기 react-slick 사용방법, 커스텀 방법

React-slick이란? react-slick은 react에서 슬라이드를 손쉽게 구현하도록 도와주는 라이브러리이다. 2. ...

blog.naver.com

 

slick - the last carousel you'll ever need

slick is a responsive carousel jQuery plugin that supports multiple breakpoints, CSS3 transitions, touch events/swiping & much more!

kenwheeler.github.io

 

 

 

이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 수강하며 정리한 글입니다.

 

 

🟦 기본 환경: IDE: IntelliJ, Language: Java

📚 수정일: 2023년 05월 30일

 

 

@Inheritance

Entity Class간 상속 관계를 나타내는 Annotation

1. InheritanceType.SINGLE_TABLE: 단일 테이블 전략

 - 부모 클래스와 자식 클래스의 모든 속성을 단일 테이블에 저장

 - DTYPE 컬럼을 사용하여 엔티티 타입을 식별

2. InheritanceType.JOINED: 구분 컬럼 전략

 - 각 클래스마다 별도 테이블 생성, 부모 클래스의 속성은 부모 테이블에, 자식 클래스의 속성은 자식 테이블에 저장

 - 조인을 사용하여 관련 테이블을 연결

 - 각 테이블은 자식 클래스의 속성만을 포함하며, 공통된 속성은 부모 테이블에 저장

3. InheritanceType.TABLE_PER_CLASS: 서브클래스 테이블 전략

 - 각 클래스마다 별도의 테이블을 생성, 각 테이블에 해당 클래스의 속성이 저장
 - 공통된 속성은 부모 클래스에 저장되지 않음

 

@DiscriminatorColumn(name = "DTYPE")

: JPA에서 상속 관계를 매핑할 때 사용되는 Annotation

: 부모 클래스에 선언되며, 하위 클래스를 구분하는 용도의 컬럼을 생성

: 하위 클래스에서 @DiscriminatorValue를 통해 DTYPE 컬럼에 저장될 값을 지정

: @DiscriminatorColumn과 @DiscriminatorValue를 사용하여 상속 계층 구조에서 엔티티 클래스를 식별하면, JPA는 적절한 타입의 객체를 가져오고 다양한 타입의 객체를 사용하는 쿼리를 작성할 수 있음

 

상위 Entity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@DiscriminatorColumn(name = "dtype")
@Getter @Setter
public abstract class Item {
 
    @Id @GeneratedValue
    @Column(name = "item_id")
    private Long id;
 
    private String name;
 
    private int price;
    private int stockQuantity;
}
 
 
cs

 

하위 Entity

1
2
3
4
5
6
7
8
9
@Entity
@DiscriminatorValue("A")
@Getter @Setter
public class Album extends Item {
 
    private String artist;
    private String etc;
}
 
 
cs

 

→ 상위 Entity table에 dtype이라는 column이 생성되고 Item을 상속하는 Album class는 dtype column에 "A"값으로 저장됨

 

이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 수강하며 정리한 글입니다.

 

 

🟦 기본 환경: IDE: IntelliJ, Language: Java

 

 

@OneToMany

Member : Order = 1 : 다, 한 명의 회원이 여러개의 상품 주문
양방향 연관 관계에서는 Member가 Order를, Order가 Member를 변경할 수 있는 문제가 발생
이를 해결하기 위해 Member or Order 둘 중 하나의 값이 변경될 경우에만, FK를 업데이트함(=연관관계의 주인)
연관 관계 주인: FK가 선언된 테이블
mappedBy: member에 의해 종속적으로 값을 전달받음 ▶ orders 값은 FK에 영향 X, member 값은 FK에 영향 O

 

@ManyToOne

Order : Member = 다 : 1

JoinColumn: Mapping 연결 고리 (FK)

 

이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 수강하며 정리한 글입니다.

 

 

🟦 기본 환경: IDE: IntelliJ, Language: Java

 

 

@Embeddable, @Embedded: 새로운 값 타입을 직접 정의하여 사용 

@Embeddable: 값 타입을 정의하는 곳에 기재

* 기본 생성자 필수

 

@Embedded: 값 타입을 사용하는 곳에 기재

 

⭐ 장점

- Embedded 타입을 사용하기 전과 후에 매핑하는 테이블이 같음

- 해당 값 타입만 사용하는 의미 있는 메소드를 만들 수 있음

 

+ @AttributeOverride: 중복된 Embedded 타입 사용 시, 새로운 Column name 지정

 

 

 

참고 자료

 

JPA - Entity의 가독성을 높이자(@Embedded, @Embeddable, @AttributeOverride 사용법)

@Embedded, @AttributeOverride JPA에서는 Entity안의 값을 조금 더 의미있는 값으로 표현하기 위해 응집된 하나의 객체로 데이터를 표현합니다. 이번 포스팅에서는 이 처럼 JPA의 Entity를 조금 더 확실한 의

galid1.tistory.com

 

🟦 기본 환경: IDE: IntelliJ, Language: Java

 

 

발생 Error

SpringBoot에서 다음 Source Code를 실행할 경우,

🚨다음과 같은 Error 발생

could not prepare statement; SQL [call next value for hibernate_sequence];

nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement

 

 

발생 원인

환경 설정 파일 application.yml에서 띄어쓰기 오류

 

 

해결 방법

계층 구조에서 띄어쓰기 맞추기 및 ddl-auto:create → ddl-auto: create 띄어쓰기 추가