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

 

 

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

 

 

1. isEmpty()

 - Java6부터 사용 가능

 - String의 길이로 T/F 판단

 

2. isBlanck()

- Java11부터 사용 가능

 - 빈칸도 Blank로 인식

 

3. StringUtils.haxText()

- Check whether the given String contains actual text

- Null값이라도 실제 text가 없을 경우, false 반환

 - Spring FrameWork에서 제공

 

 

 

참고 자료

 

StringUtils (Spring Framework 6.0.9 API)

hasText Check whether the given CharSequence contains actual text. More specifically, this method returns true if the CharSequence is not null, its length is greater than 0, and it contains at least one non-whitespace character. StringUtils.hasText(null) =

docs.spring.io

 

 

자바 StringUtils.hasText를 이용한 공백 NULL 확인방법

자바에서 NULL 혹은 공백, 띄어쓰기만 있는 항목이 들어올 경우 isblank를 사용하면 null을 확인할 수 없고 == null을 사용하면 반대 경우의 문제가 생기는데 굳이 메소드를 따로 만들어서 사용하느니

wakestand.tistory.com

 

'Java > JPA' 카테고리의 다른 글

[SpringBoot_JPA_1] @Transactional  (0) 2023.05.29
[SpringBoot_JPA_1] Dirty Checking & Merge  (1) 2023.05.28
[SpringBoot_JPA_1] create Private Method  (0) 2023.05.27
[SpringBoot_JPA_1] Injection  (0) 2023.05.25
[SpringBoot_JPA_1] Cascade Type  (0) 2023.05.25

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

 

 

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

 

 

Class 내에서 일정한 로직이 반복이 될 때 메서드를 생성하여 호출함으로써 코드의 중복을 줄임

 

기존

 상품주문, 상품주문_재고수량초과 메서드에서 코드의 중복 발생

 

변경

 private method 생성 및 호출

(+ IntelliJ 단축키: ctrl + alt + m)

 

 setter 값 변경 불가 → 매개변수 활용

 

변경2

 매개변수를 활용하여 setter값 변경 가능

(+ IntelliJ 단축키: ctrl + alt + p)

 

'Java > JPA' 카테고리의 다른 글

[SpringBoot_JPA_1] Dirty Checking & Merge  (1) 2023.05.28
[SpringBoot_JPA_1] StringUtils.hasText()  (0) 2023.05.27
[SpringBoot_JPA_1] Injection  (0) 2023.05.25
[SpringBoot_JPA_1] Cascade Type  (0) 2023.05.25
[SpringBoot_JPA_1] FetchType.LAZY, EAGER  (0) 2023.05.25

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

 

 

발생 Error

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

🚨다음과 같은 Error 발생

nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service

 

 

발생 원인

H2 DB를 실행하지 않고 Test 진행

 

 

해결 방법

H2 DB를 실행

1. cmd 상 h2 DB가 설치된 위치로 이동 후, h2.sh 또는 h2.bat 실행

2. H2 콘솔 페이지 로드 시, 연결 버튼 클릭

 

 

 

참고 자료

 

Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 에러 - 인프런 | 질문 & 답변

제가 오랜만에 강의를 들어와서 진행하고 있습니다Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]이 에러가 발생하는데 h2 데이터베이스 연결은 했는데요제 applicat...

www.inflearn.com

 

 

H2 Database 설치, 서버 실행, 접속 방법 (Windows, MacOS)

H2 Database 설치, 서버 실행, 접속 방법 (Windows, MacOS) H2 데이터베이스는 설치가 필요 없고 용량이 매우 가벼우며 웹용 콘솔(쿼리툴)을 제공하여 개발용 로컬 DB로 사용하기 좋은 데이터베이스이다. H

atoz-develop.tistory.com

 

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

 

 

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

 

 

1. Field Injection

❌ Test case 주입이 어려움

 

2. Setter Injection

⭕ Test case 주입 가능

❌ memberRepository가 제약없이 변경 가능

 

3. Constructor Injection

⭕ Test case 주입 가능

 memberRepository 변경의 제약(생성자 1회만 호출)

Test case가 반드시 주입될 수 있도록 함

 

4. Lombok: @AllArgsConstructor

모든 필드에 대해 생성자 생성

 

5. Lombok: @RequiredArgsConstructor

final 필드에 대해 생성자 생성

값이 주입되지 않을 경우, compile error 발생

 

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

 

 

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

 

 

Cascade: 영속성 전이

: 상위 Entity 영속화 → 하위 Entity 영속화, 상위 Entity 삭제 → 하위 Entity 등 특정 Entity를 영속 상태로 만들 경우, 연관 Entity도 함께 영속상태로 전이되는 것

 

 

Cascade 종류

1. Cascade.ALL

: 상위 Entity에서 일어나는 모든 Cascade에 대하여 하위 Entity로 전이

 

2. Cascade.PERSIST

: 상위 Entity 저장 시, 하위 Entity 저장

 

3. Cascade.MERGE

: 상위 Entity 상태 병합 시, 하위 Entity 상태 병합

 

4. Cascade.REMOVE

: 상위 Entity 삭제 시, 하위 Entity 삭제

 

5. Cascade.REFRESH

: 상위 Entity 인스턴스 값을 다시 읽어올 경우(= 새로고침 할 경우), 하위 Entity까지 새로고침

 

6. Cascade.DETACH

: 상위 Entity를 영속성 컨텍스트에서 제거(detach*)할 경우, 하위 Entity까지 제거

 * detach, 준영속 상태: 영속 상태의 entity가 영속성 컨텍스트에서 분리된 것

 + Persistance Context: Entity를 영구 저장하는 환경으로, 어플리케이션과 DB 사이에서 객체를 보관하는 가상의 저장소같은 역할

 

 

 

참고 자료

 

JPA 연관관계 영속성 전이(CASCADE) - CascadeType

📎 JPA 영속성 전이(CASCADE) 안녕하세요! 이번에 정리할 내용은 JPA에서 영속성 전이(CASCADE)와 관련된 내용입니다. 최근 개발을 진행하며 두 연관된 엔티티에서 save()를 하는 과정에서 오류가 발생

zzang9ha.tistory.com

 

[JPA] Spring JPA CascadeType 종류

JPA Cascade Types Spring JPA CascadeType 종류 javax.persistence.CascadeType JPA Cascade Type ALL PERSIST MERGE REMOVE REFRESH DETACH CascadeType.ALL 상위 엔터티에서 하위 엔터티로 모든 작업을 전파 @Entity public class Person { @Id @Gen

data-make.tistory.com

 

[Spring JPA] 영속성 컨텍스트(Persistence Context)

영속성 컨텍스트란? 엔티티를 영구 저장하는 환경이라는 뜻으로 어플리케이션과 DB사이에서 객체를 보관하는 가상의 DB같은 역할을 한다.

velog.io

 

[Spring] JPA - 영속성 컨텍스트(Persistence Context) 정리

이전 글에서 JPA에 대한 기본 정리를 진행해보았습니다. 이번 글에서는 JPA 에서 가장 중요할 수 있는 영속성 컨텍스트(Persistence Context)에 대해서 정리해보고자 합니다. 1. 영속성 컨텍스트란? - 엔

dev-jwblog.tistory.com

 

'Java > JPA' 카테고리의 다른 글

[SpringBoot_JPA_1] create Private Method  (0) 2023.05.27
[SpringBoot_JPA_1] Injection  (0) 2023.05.25
[SpringBoot_JPA_1] FetchType.LAZY, EAGER  (0) 2023.05.25
[SpringBoot_JPA_1] JPA Entity Default Constructor  (1) 2023.05.23
[SpringBoot_JPA_1] @JoinTable  (0) 2023.05.23