Java/JPA43 [SpringBoot_JPA_1] @Transactional 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java @Transactional : 선언적 Transaction, 해당 범위 내 메서드가 트랜잭션이 되도록 보장 : 클래스, 메소드에 @Transactional이 선언되면 해당 클래스에 트랜잭션이 적용된 프록시 객체 생성 → 프록시 객체는 @Transactional이 포함된 메서드가 호출될 경우, 트랜잭션을 시작하고 Commit or Rollback을 수행 * CheckedException or 예외가 없을 때는 Commit UncheckedException이 발생하면 Rollback 즉, @Transactional를 선언함으로써 .. 2023. 5. 29. [SpringBoot_JPA_1] Dirty Checking & Merge 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java 1. Dirty Checking, 변경감지 : Transaction Commit 시, 영속화된 Entity에서 가지고 있던 최초의 정보(Snap Shot)와 바뀐 Entity 정보를 비교해서 변경된 부분을 update해주는 기능 @Transaction 안에서 entity 값을 변경해야 dirty checking, 변경 감지가 일어날 수 있음 : flush → commit → update query → DB 2. Merge, 병합 : 준영속 상태의 엔티티를 영속 상태로 변경할 때 사용 준영속 엔티티의 식별자 값으로 영속 엔티티를.. 2023. 5. 28. [SpringBoot_JPA_1] StringUtils.hasText() 이 글은 김영한의 [실전! 스프링 부트와 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 .. 2023. 5. 27. [SpringBoot_JPA_1] create Private Method 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java Class 내에서 일정한 로직이 반복이 될 때 메서드를 생성하여 호출함으로써 코드의 중복을 줄임 기존 ❌ 상품주문, 상품주문_재고수량초과 메서드에서 코드의 중복 발생 변경 ⭕ private method 생성 및 호출 (+ IntelliJ 단축키: ctrl + alt + m) ❌ setter 값 변경 불가 → 매개변수 활용 변경2 ⭕ 매개변수를 활용하여 setter값 변경 가능 (+ IntelliJ 단축키: ctrl + alt + p) 2023. 5. 27. [SpringBoot_JPA_1] Injection 이 글은 김영한의 [실전! 스프링 부트와 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: @RequiredArgsConst.. 2023. 5. 25. [SpringBoot_JPA_1] Cascade Type 이 글은 김영한의 [실전! 스프링 부트와 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 상태 병합 시, 하위 Ent.. 2023. 5. 25. 이전 1 ··· 3 4 5 6 7 8 다음