728x90

이 글은 김영한의 [실전! 스프링 부트와 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

 

728x90
728x90

🟦 기본 환경: 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 띄어쓰기 추가

 

728x90
728x90

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

 

 

발생 Error

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

🚨다음과 같은 Error 발생

No EntityManager with actual transaction available for current thread

 - cannot reliably process 'persist' call; nested exception is javax.persistence.

 

 

발생 원인

JPA는 transaction을 기반으로 작동하므로 JPA사용 시, @Transactional 선언 필요

 

 

해결 방법

Class에 @Transactional 추가

 

728x90
728x90

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

 

 

발생 Error

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

⚠️ 다음과 같은 Error 발생

TypeError: Cannot read property 'movie' of undefined

 

 

발생 원인

getMovie()에 사용되는 API JSON데이터 구조는 다음과 같음

출처: https://yts.mx/api/v2/list_movies.json?minimum_rating=9&sort_by=year

해당 객체 전체를 json으로 받고 rating을 추출하고자할 경우, data.data.movie.rating으로 접근할 수 있으나 객체가 로드되지 않은 상태에서 접근 시 TypeError 발생

 

 

해결 방법

1. ?.(Optional Chaining) 연산자를 사용하여 객체 체인 중간에 있는 속성 또는 메서드에 접근하기 전에 해당 값이 존재하는지 확인하고, 값이 존재하지 않을 경우에 undefined를 반환하여,TypeError를 방지

* ?.(Optional Chaining) 연산자: 값이 존재하지 않을 가능성이 있는 중첩된 객체나 배열의 속성 또는 메서드에 안전하게 접근할 수 있도록 도와줌(API 비동기 작업 중 데이터가 로드되면 실제 값을 반환하고, 로드되지 않았을 때는 undefined를 반환)

기존 rating에서 background_image로 사용

 

2. 객체를 크게 잡을 경우, 단계를 깊이 들어가야하므로 setData의 범위를 JSON의 일부(json.data.movie)로 한정

 

728x90
728x90

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

 

 

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

 

 

MovieApp.js

 

Home.js

 

Movie.js

 

Detail.js

 

 

 

소스 코드

🔗 HJ0216/TIL/REACT

 

728x90