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

Query Methods: Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공 테이블에서 요청하고자 하는 SQL을 아래와 같은 method이름을 사용해서 선언할 수 있음 1. MemoRepository.java에서 작성하기 package com.sparta.sparta_memo_project.repository;import com.sparta.sparta_memo_project.dto.MemoRequestDto;import com.sparta.sparta_memo_project.dto.MemoResponseDto;import com.sparta.sparta_memo_project.entity.Memo;import jakarta.persist..

Timestamped 데이터의 생성(created_at), 수정(modified_at) 시간 자주 사용됨 각각의 Entity의 생성 수정 시간을 매번 작성하는건 너무 비효율적Spring Data JPA에서는 시간에 대해서 자동으로 값을 넣어주는 기능인 JPA Auditing 제공 어노테이션 @MappedSuperclassJPA Entity 클래스들이 해당 추상 클래스를 상속할 경우 createdAt, modifiedAt 처럼 추상 클래스에 선언한 멤버변수를 컬럼으로 인식@EntityListeners(AuditingEntityListener.class)해당 클래스에 Auditing 기능 포함@CreatedDateEntity 객체가 생성되어 저장될 때 시간이 자동으로 저장최초 생성 시간이 저장되고 그 이후에..

JpaRepository 등록JpaRepository 상속받는 interface로 선언 Spring Data JPA에 의해 자동으로 Bean 등록 되어있음제네릭스의 @Entity 클래스 위치에 Memo Entity를 추가했기 때문에 해당 MemoRepository는 DB의 memo 테이블과 연결되어 CRUD 작업을 처리하는 인터페이스가 되었음실습) 메모장 프로젝트 Spring Data JPA 적용JDBC 기반의 memoRepository (수정 전)package com.sparta.sparta_memo_project.repository;import com.sparta.sparta_memo_project.dto.MemoRequestDto;import com.sparta.sparta_memo_project...

등장배경더보기서버는 데이터베이스와 어떠한 방법을 통해 소통을 할까? 애플리케이션 서버에서 DB에 접근하기 위해 여러가지 작업이 필요함우선 DB에 연결하기 위해 커넥션 연결SQL을 작성한 후 커넥션을 통해 SQL을 요청요청한 SQL에 대한 결과를 응답 받음 그러나 이 경우 기존에 사용하던 MySQL 서버를 PostgreSQL 서버로 변경해야 하는 상황에서커넥션을 연결하는 방법, SQL을 전달하는 방법, 결과를 응답받는 방법 모두 달라질 수 있음 그래서 등장한 것이 JDBC 표준 인터페이스 JDBC (Java Database Connectivity) - DB 교체 간편하게: DB에 접근할 수 있도록 Java에서 제공하는 API JDBC Template - DB 연결 간편하게 (사용할 일은 희박) 커넥..

Spring Data JPA: JPA를 쉽게 사용할 수 있게 만들어 놓은 모듈: JPA를 추상화시킨 Repository 인터페이스 제공 Repository 인터페이스 : Hibernate와 같은 JPA구현체를 사용해서 구현한 클래스를 통해 사용: 이것을 통해 개발자는 JPA 간편하게 사용 가능 SimpleJpaRepository Spring Data JPA에서는 JpaRepository 인터페이스 구현하는 클래스 자동 생성 Spring 서버가 뜰 때 JpaRepository 인터페이스를 상속받은 인터페이스 자동으로 스캔 해당 인터페이스의 정보를 토대로 자동으로 SimpleJpaRepository 클래스를 생성 이 클래스를 Spring ‘Bean’으로 등록

스프링 컨테이너 환경에서는 영속성 컨텍스트와 트랜잭션 생명주기가 일치= 트랜잭션이 유지되는 동안은 영속성 컨텍스트도 계속 유지됨 앞선 트랜잭션 테스트 : 메모 생성 실패 실습은 트랜잭션이 적용되지 않아,영속성 컨텍스트가 유지되지 못해 오류 발생 Q. Spring은 어떻게 서비스부터 Repository까지 Transaction 유지? → Spring이 제공하는 트랜잭션 전파 기능 트랜잭션 전파 기능 test 3 @Test@Transactional@Rollback(value = false)@DisplayName("트랜잭션 전파 테스트")void test3() { //EntityManager을 자식 메소드에 보내줌 (em) memoRepository.createMemo(em); Syste..