Spring/JPA20 연관관계, ERD 연관관계(R_DB) 예를 들어 기존 user 테이블에 저장된 데이터 중 이름이 변경되어 있다고 한다면 다른 테이블에서 user 테이블에 이름을 조회 한다고 한다면 이름을 직접적으로 조회하지 않고 user 테이블에 pk인 id를 조회함으로써 이름이 변경되었다고 하더라도 변경된 값을 이상없이 가져올 수 있다. ERD [DB] ERD(Entity-Relationship Diagram) : 네이버 블로그 (naver.com) [DB] ERD(Entity-Relationship Diagram) ERD(Entity Relationship Diagram)란? ERD는 말로서 되어있는 요구분석사항을 그림으로 그려내어 ... blog.naver.com 툴: drow.io 배워봅시다 Draw.io (tistory.com).. 2021. 7. 24. Entity Listener 사용 예제 2 history 기능을 사용할 때 유용하다 history를 담을 객체를 새로 생성 (원본과 동일하게 선언) package com.example.bookmanager.domain; import com.example.bookmanager.domain.listener.Auditable; import lombok.*; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; impo.. 2021. 7. 18. Entity Listener Listener: 어떠한 동작하는 것을 기다리다가 동작하게 되면 이벤트를 동작 해주는 것 Entity Listener: Entity 객체가 어떠한 동작을 하는지 기다리다가 이벤트를 동작 시키는 것 참고 사이트: https://erim1005.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%80%EA%B2%BD-%EC%95%8C%EB%A6%BC-EntityListeners 데이터 변경 알림 - @EntityListeners spring 의 data-jpa 사용시 데이터 변경시 알림을 받는 방법이 있다. EntityListener 클래스를 만들고 public class DataDtoListener { @PostLoad public void postLoad(Dat.. 2021. 7. 18. Enum 사용 예제 Enum: 열거형으로 객체를 새로 생성할 때 사용한다. 코드 package com.example.bookmanager.domain; public enum Gender { MALE, FEMALE } User 객체에 추가 private Gender gender; enum 값을 확인하기 위해 쿼리 작성 (JpaRepository를 상속받은 위치에서 작성한다.) // enum test // 사용자가 쿼리를 직접 입력하고 반영할 수 있도록 설정 @Query(value = "select * from user limit 1;", nativeQuery = true) Map findRawRecord(); 테스트 코드 @Test void enumTest(){ Dto(); User user = userRepository.f.. 2021. 7. 18. Entity 기본 속성 @Entity: DTO에 명시해주는 어노테이션으로 해당 객체가 JPA에서 관리되어지는 Entity객체임을 나타낸다. 반드시 구분할 수 있는 기본키가 존재해야한다.(@ID 어노테이션으로 정의 해준다.) @GeneratedValue: 기본키를 자동적으로 생성할 수있도록 도와주는 어노테이션 @Table: DTO에 명시해주는 어노테이션으로 선언해주게 되면 해당 클래스의 매핑되는 테이블을 생성할 때 테이블의 해당하는 속성을 정의해 줄 수 있다. 테이블명 선언 예제 @Table(name = "user_aa") 확인 인덱스와 키 설정도 함께 만들어 줄 수 있지만 실제 DB에서는 사용이 불가하다. @Table(name = "user_aa", indexes = {@Index(columnList = "name")}, un.. 2021. 7. 18. Query Method 예제 - 5(페이징 처리) 페이징 처리 코드 // Page: 응답 값, Pageable: 요청 값 Page findByName(String name, Pageable pageable); 테스트 코드 // 페이징 처리 System.out.println("findByName: " + userRepository.findByName("martin", PageRequest.of(0, 1, Sort.by(Sort.Order.desc("id"))))); 확인 페이징 처리된 데이터를 확인하는 방법 테스트 코드 // 내부의 값을 가져오는 방법 System.out.println("findByName2: " + userRepository.findByName("martin", PageRequest.of(0, 1, Sort.by(Sort.Order.de.. 2021. 7. 17. 이전 1 2 3 4 다음