본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


반응형

JPA/Spring data JPA

(12)
SPRING DATA JPA 공부 7 - AuditingEntityListener 사용 지금까지 직접 EntityListener를 작성했지만 사실 자주 사용 되는 기능들을 이미 스프링에서 구현해놓은 EntityListner가 있다 . 바로 AuditingEntityListener 이다 . AuditingEntityListener을 사용하기 위해선 어플리케이션 구동 클래스에 @EnableJpaAuditing을 달아줘야 한다 . @SpringBootApplication @EnableJpaAuditing public class JpaTestApplication { public static void main(String[] args) { SpringApplication.run(JpaTestApplication.class, args); } } 엔티티에서 @EntityListener( value = ..
SPRING DATA JPA 공부 5 - EntityListener 활용 EntityListener는 해당 엔티티 라이프 사이클 중 특점 시점에 원하는 로직을 처리하도록 한다 . 총 7가지가 있으며 각각 엔티티의 라이프 사이클에 맞게 동작한다 @NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor @Data @Builder @Entity public class User { @Id @GeneratedValue private Long id; @NonNull private String name; @NonNull private String email; private String nickName; @Transient private String testData; @Enumerated(value = EnumType.STRING) ..
SPRING DATA JPA 공부 4 - Query Method 활용 2 ( 정렬과 페이징) 이전 시간에 쿼리메소드에 대한 기본적인 활용에 대해 알아봤다 . 쿼리메소드를 통해 정렬과 페이징을 할 수 있는 방법을 알아보려한다 . repository에 3가지 메소드를 만들었다 1.정렬 List findTop3ByNameOrderByIdDesc(String name); List findFirstByNameOrderByIdDescEmailAsc(String name); List findFirstByName(String name , Sort sort); fintTop3는 이름순으로 내림차순으로 정렬하여 그 중 가장위의 3개 레코드를 얻어오느 메서드이다 메서드이름에 OrderByIdDesc가 그것을 의미한다 . findFirstByNameOrderByIdDescEmailAsc 이름이 엄청길다 이 메서드 처..
SPRING DATA JPA 공부 3 - QueryMethod 활용 JPA에서 기본적으로 제공하는 메서드들이 있지만, where 절에 특정 값을 넣는 경우에는 기본제공 메서드들로 생성하기 한계가 있다 QueryMethod는 Repository에 메소드 이름으로 간편하게 where 절을 구성할 수 있게 해주는 기능이다 . IDE에서 추천을 해주기 때문에 작성하는데에 더욱 편리하다 필드명까지 참조해서 추천해준다 하지만 아래의 추천이 모두 알맞은 쿼리를 작성해 주는 것은 아니기 때문에 아래의 규칙을 한번 보면 좋을 것 같다 . 리턴타입과 메서드명에 관한 규칙들이다 package com.ugo.jpatest.repository; import com.ugo.jpatest.domain.User; import org.springframework.data.jpa.repository.J..
SPRING DATA JPA 공부 2- JPA 메서드 살펴보기 JPA의 기본적인 메서드들을 살펴보자 먼저 테스트하기 위해 entity객체를 하나 만들었다 User @NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor @Data @Builder //위에 까지는 롬복의 어노테이션이다 //@Entity 는 해당 객체가 JPA에서 관리할 엔티티 타입임을 알려준다. @Entity public class User { @Id @GeneratedValue private Long id; @NonNull private String name; @NonNull private String email; private LocalDateTime createdAt; private LocalDateTime updatedAt; } @Id ..
SPRING DATA JPA 공부 1 - JPA 란? 백엔드 개발에서 주된 일이라고하면 객체화된 데이터를 데이터베이스에 넣거나 반대로 데이터베이스에서 데이터를 꺼내와 객체화하여 응답해주는 일이다. 데이터를 저장하기 위해 데이터베이스를 사용한고 , 객체지향에서 사용하는기본 단위는 오브젝트를 기본 단위로 사용한다. ORM은 객체와 데이터베이스간의 연결을 담당하며 어플리케이션 과 JDBC 사이에서 동작한다. ORM Object Relational Mapping의 약자이다. JPA는 Java Persitance Api의 약자이다. 현재 자바에서 표준으로 채택된 ORM이다. 스프링에서 JPA를 주입받아 Jar파일을 확인해보면 Jacarta.Persistence.Api 라는 이름으로 되어 있는데 2019년 부터 Java Persitance Api에서 Jacarta...
Spring Data JPA 반환타입 컬랙션 , 단건 , Optional 등등 여러가지를 반환 받을수있다 자세한내용은 아래 링크에서 docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types Table 9. Query return types검색 주의할 점은 JPASpring Data JPA에서는 조회되는 값이 없더라도 Exception이 터지지않게 내부적으로 Try Catch문을 구현해 놨기떄문에 컬랙션일 경우 빈 컬랙션을 반환하고 단건일 경우 null을 반환해준다. 데이터가 있을지 없을지 모르면 Optional을 사용하여 분기해준다. 반환 타입은 하나인데 결과가 2개이상이라면 예외가 터진다.
Spring Data JPA @Query -컬렉션 파라미터 바인딩 파라미터를 컬렉션으로 넘겨서 조회할 수도 있다 위 코드의 쿼리를 보면 in 절을 이용하여 names에 들어 있는 값을 모두 조회 하였다. 위의 메서드를 통해 나온 쿼리 이다 List에 담겨있던 username이 in절에 바인딩 되었다.

반응형