목록스파르타 코딩 클럽 | 자바 심화 과정/Spring Master (입문 주차) (33)
LUMI_dev

트랜잭션 쉽게 적용하는 법더보기JPA는 데이터베이스의 트랜잭션 개념을 가져와서 사용하고 있음 Springboot에서도 트랜잭션을 JPA에 부여해야 함 Boot에서는 Entity 매니저가 제공하는 Entity 트랜잭션을 사용하는게 아닌트랜잭션 환경을 손쉽게 만들 수 있음shift 두 번 누르기 (검색창) > SimpleJPARepository 검색 > class 클릭해서 선택 그럼 창이 뜨는데 > 해당 창에서 save 검색해보기@Transactional을 클래스나 메서드에 추가하기메서드에 호출된 @Transactional메서드가 호출되면 해당 메서드 내에서 수행되는 모든 DB 연산 내용은 하나의 트랜잭션으로 묶임해당 메서드가 정상적으로 수행되면 트랜잭션 커밋 / 예외 발생하면 롤백 클래스에 호출된 @T..

SpringBoot 환경에서는 EntityManagerFactory와 EntityManager 자동 생성 실습) 메모장에 JPA 적용해보기 1. build.gradle에 JPA 설정 넣어주기plugins { id 'java' id 'org.springframework.boot' version '3.4.1' id 'io.spring.dependency-management' version '1.1.7'}group = 'com.sparta'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { ..

1. 비영속 (Transient) 2. 영속 (Managed)3. 준영속 (Detached)4. 삭제 (Removed) 1. 비영속 (Transient) new 연산자를 통해 인스턴스화된 Entity 객체 아직 영속성 컨텍스트에 저장 안됨 → JPA의 관리 받지 않음 JPA가 관리하지 못하기 때문에 해당 객체의 데이터를 변경해도 변경 감지 이뤄지지 않음 Memo memo = new Memo(); // 비영속 상태memo.setId(1L);memo.setUsername("Robbie");memo.setContents("비영속과 영속 상태"); 2. 영속 (Managed) .persist(entity) : EntityManager를 통해 비영속 Entity를 영속성 컨텍스트에 저장 / 관리되고 있는 상..

이것을 공부하기 위해 트랜잭션 공부함 JPA는 트랜잭션처럼 SQL을 모아서 한번에 DB에 반영함 이를 구현하기 위해, 쓰기 지연 저장소로 SQL을 모아두고 있다가 트랜잭션 Commit 후 한번에 DB에 반영 실습) 쓰기 지연 저장소 @Test@DisplayName("쓰기 지연 저장소 확인")void test6() { EntityTransaction et = em.getTransaction(); et.begin(); try { Memo memo = new Memo(); memo.setId(2L); memo.setUsername("Robbert"); memo.setContents("쓰기 지연 저장소"); em.persist..

영속성 컨텍스트: Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간 영속성 컨텍스트는 어떻게 Entity 객체를 효율적으로 관리하고 있을까? 영속성 컨텍스트는 내부적으로 캐시 저장소를 가지고 있음 우리가 저장하는 Entity 객체들이 1차 캐시 (캐시 저장소)에 저장 캐시 저장소는 Map 자료 구조 형태로 되어 있음영속성 컨텍스트는 캐시 저장소 key에 저장한 식별자 값을 사용하여 Entity 객체를 구분하고 관리캐시 저장소내용key@Id로 매핑한 기본 키 (=식별자 값) 저장 value 해당 Entity 클래스의 객체 저장 영속성 컨텍스트의 캐시 저장소 활용 방법 준비더보기PersistenceTest Class 만들기 및 세팅 Entity 저장 테스트 코드 더보기@Test@Disp..

트랜잭션이란? 트랜잭션: DB 데이터들의 무결성과 정합성을 유지하기 위한 하나의 논리적 개념: 데이터베이스의 데이터들을 안전하게 관리하기 위해서 생겨난 개념 가장 큰 특징) 여러 개의 SQL이 하나의 트랜잭션에 포함될 수 있음→ 모든 SQL이 성공적으로 수행되면 DB에 영구적으로 변경 반영 / 단 하나라도 실패하면 모든 변경 되돌림 MySQL에서 직접 트랜잭션 사용해보기mySQL 콘솔에 붙여넣기START TRANSACTION; # 트랜잭션을 시작합니다.INSERT INTO memo (id, username, contents) VALUES (1, 'Robbie', 'Robbie Memo');INSERT INTO memo (id, username, contents) VALUES (2, 'Robbert',..