전체 글

전체 글

    3. 쿼리 메소드 기능

    스프링 데이터 JPA가 다음과 같은 기능들을 제공한다. 쿼리 메소드 기능 3가지 메소드 이름으로 쿼리 생성 메소드 이름으로 JPA NamedQuery 호출 @Query 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의 메소드 이름으로 쿼리 생성 스프링 데이터 JPA는 메소드 이름을 분석해서 JPQL을 생성하고 실행 이름과 나이를 기준으로 회원을 조회하려면? 순수 JPA 리포지토리 public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :username and m.age > :age", Member.class..

    2. 공통 인터페이스 기능

    순수 JPA 기반 리포지토리 만들기 우선 순수한 JPA기반 리포지토리를 만들어 보자 기본 CRUD 1. Create(저장) public Member save(Member member) { em.persist(member); return member; } 2. Update(변경 → 변경감지 사용) JPA에서 수정은 변경감지 기능을 사용하면 된다. 트랜잭션 안에서 엔티티를 조회한 다음에 데이터를 변경하면, 트랜잭션 종료 시점에 변경감지 기능이 작동 해서 변경된 엔티티를 감지하고 UPDATE SQL을 실행한다. 3. Delete(삭제) public void delete(Member member) { em.remove(member); } 4. Read(조회) public Member find(Long id) {..

    1. 프로젝트 환경설정 & 예제 도메인 모델

    프로젝트 생성 Spring boot IntelliJ-ultimate 버전이 아니라면 스프링 부트 스타터를 이용 (https://start.spring.io/) 사용 기능(라이브러리); web, jpa, h2, lombk SpringBootVersion: 2.7.15 groupId: study artifactId: data-jpa Gradle config code plugins { id 'java' id 'org.springframework.boot' version '2.7.15' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'study' version = '0.0.1-SNAPSHOT' java { sourceCompati..

    2. 타임리프 - 스프링 통합과 폼

    타임리프 스프링 통합 Tutorial: Thymeleaf + Spring Preface This tutorial explains how Thymeleaf can be integrated with the Spring Framework, especially (but not only) Spring MVC. Note that Thymeleaf has integrations for both versions 3.x and 4.x of the Spring Framework, provided by two separate libraries c www.thymeleaf.org 타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 그리고 이런 부분은 스프링으로 백엔드를 개발하는 개발자..

    1. 타임리프 - 기본 기능

    프로젝트 생성 프로젝트 선택 Project: Gradle - Groovy Project Language: Java Spring Boot: 2.5.x Project Metadata Group: hello Artifact: thymeleaf-basic Name: thymeleaf-basic Package name: hello.thymeleaf Packaging: Jar Java: 11 타임리프 소개 Thymeleaf Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, us..

    [MySQL] 트랜잭션 격리 수준(isolation level)

    경쟁상태 (Race Condition) 여러 클라이언트가 같은 데이터에 동시 접근 시 생기는 문제 트랜잭션의 격리성(Isolation) 이란? 여러 Transaction은 동시에 수행될 수 있다. 이때 각 Transaction은 다른 Transaction의 연산 작업이 끼어들지 못하도록 보장하여 각각의 트랜젝션은 서로 간섭 없이 독립적으로 수행되어야 한다. 현재 수행 중인 트랜잭션이 완료될 때까지 다른 트랜잭션들이 중간 연산 결과에 접근할 수 없음을 의미한다. 따라서 동시에 수행되는 transaction이 동일한 data를 가지고 충돌하지 않도록 제어해줘야 한다. 이를 동시성제어(concurrency control) 라고한다. 즉, 격리성을 보장하기 위해서는 여러 트랜잭션이 동시에 수행되더라도 마치 순서..