jpa
-
[Spring boot] Query DSL 동적 쿼리프로젝트/아카이뷰 2024. 1. 23. 08:52
Query DSL 동적 쿼리 왜 궁금했을까❓Query DSL을 아카이뷰 프로젝트에 적용하는 과정을 보도록 하겠다. [Spring boot] Query DSLQuery DSL 왜 궁금했을까❓ArchiVIEW의 검색 API를 만들어야 했는데 필터가 존재하여 Spring Data JPA를 사용하기에는 경우의 수를 고려하여 쿼리를 만들어야 했다. 상당히 비효율적이라 생각하여 동적 쿼pslog.co.kr위 포스팅을 통해 Query DSL에 대한 개념을 이해할 수 있다.Query DSL 실습Gradle 설정(Spring Boot 3.x)Query DSL은 JPA 표준이 아니기 때문에 별도로 라이브러리를 추가해야 한다.// QueryDSLimplementation 'com.querydsl:querydsl-jpa:5...
-
[Spring boot] JPA N + 1프로젝트/아카이뷰 2024. 1. 21. 21:02
JPA N + 1 왜 궁금했을까❓ArchiVIEW 프로젝트에서 JPA를 활용하여 DB 데이터를 조회하고 있었다. console을 보니 MyBatis에서는 하나의 쿼리로 처리했던 것들이 여러 개의 쿼리로 나눠져서 나가고 있는 것을 확인했다. 이를 찾아보니 N + 1 문제라고 지칭하는 것을 알았고 이를 해결해보려고 한다. [Spring boot] JPA(Java Persistence API)JPA(Java Persistence API) 왜 궁금했을까❓SSAFY 1학기 프로젝트인 Share Your Trip을 할 때, MyBatis를 사용해서 DB에 Query를 날리곤 했는데 타입이나 변수명 등 Java 객체와 불일치 하는 경우가 많아 오류가 많pslog.co.kr [Spring boot] JPA save..
-
[Spring boot] JPA save() & Dirty Checking프로젝트/아카이뷰 2024. 1. 19. 08:52
JPA 메소드인 SAVE() 왜 궁금했을까❓JPA의 save()를 이용하여 객체를 데이터베이스에 저장하곤 했는데 Dirty Checking을 통해 저장하는 방식이 존재한다는 것을 알고 그 원리가 궁금해서 save()와 함께 학습해보려고 한다. SAVE() 동작 원리JPA에서 save()를 사용할 때, Spring Data JPA에서 제공하는 JpaRepository.save(T)를 사용하게 된다. 해당 메소드 코드를 보며 분석하고 그 원리를 학습하고자 한다.isNew() 메소드는 Entity가 새로운 것인지 아닌지 판단하는 메소드이다.일반적으로는 Entity ID의 null 여부에 따라 결정된다.Entity에 @Id와 @GeneratedValue를 사용할 경우 ID는 persist()를 호출한 이후에 I..
-
[Spring boot] JPA(Java Persistence API)프로젝트/아카이뷰 2024. 1. 13. 19:38
JPA(Java Persistence API) 왜 궁금했을까❓SSAFY 1학기 프로젝트인 Share Your Trip을 할 때, MyBatis를 사용해서 DB에 Query를 날리곤 했는데 타입이나 변수명 등 Java 객체와 불일치 하는 경우가 많아 오류가 많이 발생했다. 꼼꼼하게 확인하며 개발을 하면 문제가 없을 것이지만 짧은 시간안에 많은 작업들을 하다보니 놓치는 부분이 생기기 마련이였다. 이러한 부분을 보완할 수 있는 ORM 기술이 있다는 것을 확인하였고 그 중 JPA를 학습해보려고 한다. JPA란 ❓JPA는 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스 모음을 뜻한다. 실제적으로 구현된 것이 아닌 구현된 클래스와 매핑을 해주기 위해 사용되는 라이브러리이다. JPA를 구현한 오픈 소스로는 H..