jpa
프로젝트 설계, 이체 시 동시성과 DB Isolation Level 고민 및 적용 - MiniPay(1)
프로젝트 소개 최근 좋은 기회를 얻어서 작은 스터디를 시작하게 됐다. 스터디 운영하시는 분께서 너무 감사하게도 평소 프로젝트를 할 땐 신경 쓰지 않았던 부분들을 고민할 수 있는 주제로 프로젝트 아이디어를 제공해 주셨다.(동시성 문제, 성능 문제 등) 최근 CS의 중요성을 깨닫고 이걸 프로젝트에 어떻게 적용할지 고민이 많았는데 제공해준 프로젝트를 진행하면서 이런 고민을 해결할 수 있었다. 4개의 주제 중 페이 서비스를 만드는 것이 마음에 들었다. 평소 CRUD만 했던 DB를 Isolation Level과 락을 어떻게 걸지 고민하며 적용해 보는 것이 좋은 경험이 될 것이라고 생각했다. 또한 트랜잭션을 학습할 때 항상 이체를 예시로 들었는데 공부할 땐 예시만 보고 그렇구나~ 했던 것을 어떻게 해결할 것인지 고..
@EntityListener로 생성일, 수정일 자동으로 넣기 + 프록시 활용(연관관계 Insert) - 게시판 만들기(13)
이전에 회원가입, 로그인까지 만들었다. 나의 경우 간단하게 상세 정보도 만들어 1대 1 매핑을 했다. 이런 간단한 비즈니스들은 본인이 원하는 대로 만들면 될 것 같다. 게시글 Entity를 만들기 전에 게시글은 생성일, 수정일이 필요할 것 같아 해당 기능을 자동으로 하기 위해 JPA Auditing을 사용해보려고 한다. JPA Auditing JPA Auditing이란? JPA에서 시간 값을 자동으로 넣어주는 기능이다. Entity를 영속화 시키거나 조회를 수행한 후에 update를 하는 경우 매번 시간을 읽어와서 저장해 주는 번거로움이 있는데 JPA Auditing을 사용하면 자동으로 시간을 매핑하여 DB 테이블에 넣어준다. 사용하기 전에 이게 정말 좋을까?에 대한 생각이 들었다. 사실 자동으로 다 해..
[JPA] 개념 정리(영속화, 영속성 컨텍스트)
여태 spring-boot-starter-data-jpa 가 JPA의 전부인 줄 알았지만 아니었다. Java에서 대표적인 ORM이 JPA이고(표준이 되었음) 그 구현체 Hibernate가 있는 것과 객체는 객체답게, RDB는 RDB답게 설계하면 ORM 프레임워크가 자동으로 매핑해주는 것, DB에 종속적이지 않은 것 등은 알고 있었다. 그래서 JPA가 뭔지 더 찾아보니 기존에 내가 사용하던 것들의 원리를 알 수 있었다. JPA의 원리 JPA 동작 JPA는 어플리케이션과 JDBC 사이에서 동작한다. 어플리케이션에서 JPA로 명령을 하면 JPA가 해석해서 JDBC API를 사용하여 SQL을 실행하고 그 결과를 반환받는다. 그래서 findAll()과 같은 자바스러운 메소드를 사용해도 변환해서 SELECT * ~..
JPA 레포지터리, Member CRUD - 게시판 만들기(4)
Repository Repository란? 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들(findAll, save 등)을 사용하기 위한 인터페이스이다. 데이터 처리를 위해 테이블에 어떤 값을 넣거나 조회하거나 업데이트하거나 삭제시키는 등의 CRUD(Create, Read, Update, Delete)가 필요하다. 이때 CRUD를 어떻게 처리할지 정의하는 계층이 Repository이다. CRUD 데이터 조회하기 api 모듈에 새로운 패키지인 repository를 만들고 MemberRepository 인터페이스를 생성한다. repository/MemberRepository package com.seungh1024.repository; import com.seungh1024.entity.Memb..