일단 해보고, 아니면 뭐

실패했어도 배웠으면 실패가 아냐.

무한한 개발세계 여행기

Programing/Jpa 3

우아한 테크캠프 Pro 회고록 - EnableJpaAuditing

벌써 우테캠의 2주 차 순서인 JPA도 얼마 남지 않았다. 시간이 정말 빠른거 같다! 특히 최근 2~3주 동안 너무너무 바빴어서 더 그런 거 같다. 암튼 오늘의 포스팅 주제는 @EnableJpaAuditing 어노테이션이다. JPA 첫번째 과제를 하다가 배우고 느낀 것들을 정리해보고자 한다! 사건의 발단 created_at timestamp not null, updated_at timestamp, 여러개의 엔티티를 DDL을 참고하여 JPA 매핑 작업을 하고 있었고, 대부분의 엔티티에는 위의 컬럼들이 공통적으로 구현되어 있었다. 나는 첫번째 회사에서도 사용해본 경험이 있었어서 바로 저 부분을 공통 클래스로 구현하여 상속을 받는 구조로 구현을 시도했다! 더불어 EnableJpaAuditing 기능을 사용하여..

Programing/Jpa 2022.11.08

JPA Dynamic Query (1) - Querydsl 도입기

회사에 SaaS Portal을 개발을 진행한 지 반년이 막 넘어갈 때쯤 일 것이다. 기획과 개발 초기에는 프로젝트 규모가 굉장히 작았기 때문에 순수 Spring Data JPA만을 활용하여 데이터 CRUD 메서드 쿼리를 활용했는데, 규모가 커지면서 테이블 스키마도 복잡해지고, 조회 쿼리가 점점 복잡해지면서 JPA @Query Annotation을 이용하여 JPQL을 사용하는 일이 많아지고 직접 쿼리를 작성하는 일이 많아졌는데, 그러다 보니 스키마가 약간 변경이 될 때마다 수정해야 하는 쿼리들과 로직들이 많아지고 쿼리를 '직접' 쓰다 보니 수정점을 찾기가 힘들어지고 결국엔 수정점을 놓쳐 에러를 많이 내곤 했었다. 그래서 나는 '객체지향 쿼리 언어'인 Querydsl을 도입하게 되었다. 도입에 타당한 근거가..

Programing/Jpa 2022.06.05

JPA / Hibernate / Spring Data JPA

사용하는 기술에 대한 정확한 개념을 가지고 있는 것이 좋은 코드의 시작점이라고 생각한다. 그래서 나는 내가 사용하는 기술들 중에 여태까지 헷갈렸던? 기술들 세가지(JPA / Hibernate / Spring Data JPA)의 차이점을 정리해보았다. 1. JPA JPA는 기술명세이다. JPA는 Java Persistence API의 약자로, 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 여기서 중요한 것은 말 그대로 인터페이스라는 점이고, 특정 기능을 하는 라이브러리가 아니라는 점이다. 2. Hibernate Hibernate는 JPA라는 명세의 구현체이다. 즉, 위에서 언급한 JPA의 인터페이스를 직접 구현한 라이브러리이다. "Hibernate는 JPA의 구현체이다"..

Programing/Jpa 2022.05.30