hibernate 3

JPA annotation @DynamicUpdate?

오늘은 테이블에 대한 Entity를 만들 떄 항상 선언해 주었던 @DynamicUpdate에 대해서 정리해본다. 기본적으로 @DynamicUpdate는 Spring JPA에서 제공하는 기능이다. (JPA, Hibernate, Spring JPA가 같은 의미는 아님) 개발을 하면서 @DynamicUpdate 어노테이션이 무슨역할을 하는지도 모른채 대부분의 Entity에 선언해줬었는데, 최근들어 왜 선언해야하는지 궁금증이 생겨서 조금 조사해봤다, 간단하게 정리하면 다음과 같다. JPA는 서버가 실행될 때 CURD에 관한 SQL문을 캐싱해놓는데, 여기서 UPDATE문에 UPDATE 대상이 모든 열로 선언되어 있다는 거다, 컬럼(필드)가 20개라면 20개 컬럼에 대한 업데이트문이 선언되어 있는 것이다. (upd..

SPRING FRAMEWORK 2020.05.07

JPA의 엔티티에서의 카운팅(@Formula)

JPA를 이용해 개발하다보면 모호한 부분이 많은 것 같은데 대표적인게 JPA, Hibernate, Spring JPA인 것 같다. 여기서 정리 할 내용은 아니지만 간단히 설명하면 JPA는 기술명세, Hibernate는 인터페이스, Spring JPA는 Hibernate를 스프링 프레임워크에서 쉽게 사용할 수 있게 모듈화? 해놓은 것이라는데 이게 무슨소린지 아직도 좀 어렵다. 이 이야기를 하는 이유는 오늘 설명한 @Formula는 Hibernate의 기능이기 때문이다. 현재 내가 개발하면서 @Formula를 사용하는 경우는 조건절로 사용하거나, 집계된 데이터가 필요할 때 사용하고 있는데, 이외의 경우에도 사용할 수 있는지는 파악해보고 있다. 먼저 @Formula에 대해서 간단한 설명을 하자면, 데이터베이스..

SPRING FRAMEWORK 2020.05.03

Querydsl에서 DTO를 사용하는 방법

개발을 하고 있는데, 서로 연관 관계가 없는 테이블간에 데이터를 가져와야 할 일이 있었다, 각 Entity들에 @OneToMany나 @ManyToOne 어노테이션을 이용해 데이터를 가져오는 방법도 고려해보았으나, 위 방법은 제일 간단한 방법이였지만, 서로 연관관계도 없는 Entity에 @ManyToOne나 @OneToMany을 이용하는 건 코드품질상, 관리적 측면에서 올바르지 않다고 판단되었다, 따라서 querydsl을 이용해 데이터를 가져오기로 했으나, 막상 코드를짜서 실행해보니, 맨 앞에 선언되어있는 엔티티의 데이터만 가져오고 조인된 나머지 데이터들을 가져오지 못하는 문제가 발생했다. DTO를 이용해 데이터를 받아야겠다는 생각까지는 도달했으나, 당최 JPA서는 DTO를 어떻게 사용해야하는지 감이 안잡..

SPRING FRAMEWORK 2020.03.04