JPA 4

@EntityListener와 @PostLoad의 이슈

목차findBy에서 왜 UPDATE 쿼리가 나가지?프로시저와 연관이 있을까?범인은 @EntityListeners일부 중요한 비즈니스 변수명은 임의의 값으로 변경했다는 점을 알아두자.1. findBy에서 왜 UPDATE 쿼리가 나가지?아래와 같은 비즈니스 로직이 있었다. @Override @MyProjectWriteTransactional // 커스텀 트랜잭션 어노테이션 public String changeMoney(ChangeMoneyCommand command) { // entity를 flush 하는 로직 // procedure를 콜 하는 로직 return MemberRatingQuery.getMemberRatingMandatory(command.memberId()).getMemb..

Cascade와 고아제거속성

Cascade란? 영속성의 전이를 제공해준다. (*영속 : 영원히 계속함) 먼저 Cascade에는 크게 6가지의 종류가 있다. ALL : 모두 적용 PERSIST : 영속 (저장) MERGE : 병합 REMOVE : 삭제 REFRESH : Refresh DETACH : DETACH 각 옵션에 따라 행동이 이루어지는데, 예를들어 PERSIST로 설정할 경우, 자식 엔티티까지 영속화해서 저장한다. 또다른 예로 REMOVE로 설정할 경우, 부모 엔티티만 삭제해도 자식 엔티티까지 함께 삭제된다. REFRESH의 경우 연결된 하위 엔티티까지 인스턴스의 값을 새로 고침하며, DETACH는 연결된 하위 엔티티까지 영속성을 제거한다. 예시 [BookRepositoryTest.java] @Transactional @Te..

JPA

JPA란? JPA가 포함하는 내용은 다양하다. 개발자에게 JPA가 무엇이냐고 묻는다면 다음과 같은 다양한 키워드들을 대답할 수 있다. JPA(JAVA Persistence API), Transaction, Spring DATA JPA, Lock, Entity, Repository, ORM(Object Relational Mapping), JDBC, RDB 등등 여기서는 JPA(Java Persistence API), Spring DATA JPA, Hibernate, ORM을 다루도록 하겠다. ORM이란? 우리가 프로그래밍한 객체와 데이터베이스 사이의 관계를 연결해주는 것을 ORM(Object Relational Mapping)이라고 한다. 컴퓨터는 똑똑하지만, 사람이 말할때 말하지 않아도 '눈치'를 통해..

POJO(Plain Old Java Object)와 POJO Framework

POJO란? 순수한 자바 오브젝트를 말한다. 즉, 외부의 종속성이 없는 단순한 자바 객체를 말한다.디자인패턴에 지대한 영향을 준 마틴 파울러는 단순 자바 객체를 쓰라는 말이 폼나지 않는 다는 반응을 들었다. 적당히 'POJO'라 명명하고 POJO를 사용하라 했더니 반응이 좋아서 해당 개념이 굳혀지게 되었다. 예를들어 아래와 같이 Getter, Setter로 구성된 가장 순수한 형태의 기본 클래스를 POJO라고 할 수 있다.public class Book { private String title; private String author; public Book() {} public Book(String title, String author) { this.title = title; this.author ..