JPA5 [TIL] 2023-02-01(65day) / JPA 심화(2) JPA 심화(1) 👉 페이징 처리 프로세스 PageRequest 를 사용하여 Pageable에 페이징 정보를 담아 객체화 한다. Pageable을 JpaRepository가 상속된 인터페이스의 메서드에 T(Entity)와 함꼐 파라미터로 전달한다. 2번의 메서드의 return 으로 Page가 응답 된다. 응답된 Page에 담겨진 Page 정보를 바탕으로 로직을 처리하면 된다. 👉 Pageable - 페이징을 제공하는 중요한 인터페이스 # Pageable 만드는 법 PageRequest.of(int page, int size) : 0부터 시작하는 페이지 번호와 개수. 정렬이 지정되지 않음 PageRequest.of(int page, int size, Sort sort) : 페이지 번호와 개수, 정렬 관련 .. 2023. 2. 1. [TIL] 2023-01-31(64day) / JPA 심화(1) JPA 심화(1) // lombok @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString // jpa @Entity @Table(name = "users") public class User { /** * 컬럼 - 연관관계 컬럼을 제외한 컬럼을 정의. */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Long id; private String username; private String password; /** * 생성자 - 약속된 형태로만 생성가능하도록 지정. */ @Builder public User(String username.. 2023. 1. 31. [TIL] 2022-12-23(40day) JPA 연관관계 👉 연관관계 Aa 관계 코드 선언 Entity 예 다대일(N:1) @OneToMany Order(1) : Food(N) 배달 주문 1개에 음식 여러개 선택 가능 다대일(N:1) @ManyToOne Owner(N) : Restraunt(1) 음식점 주인 여러명이 하나의 음식점을 소유 가능 일대일(1:1) @OneToOne Order(1) : Coupon(1) 배달 주문 1개 주문 시, 쿠폰 1개만 할인 적용 가능 다대다(N:N) @ManyToMany User(N) : Restraunt(N) 고객은 음식점 여러개 찜 가능 음식점은 고객 여러명에서 찜 가능 # Member Entity @Getter @Entity @NoArgsConstructor public class Member { @Id .. 2022. 12. 26. [TIL] 2022-12-21(38day) JPA 연관관계 매핑 👉 연관관계 매핑이란? - 객체의 참조와 테이블의 외래 키를 매핑하는 것을 의미 - JPA에서는 연관 관계에 있는 상대 테이블의 PK를 멤버 변수로 갖지 않고, 엔티티 객체 자체를 통째로 참조 👉 연관관계를 이해하기 위한 3가지 키워드 1. 방향 - 단방향 관계 : 두 Entity가 관계를 맺을 때, 한쪽의 Entity만 참조 - 양방향 관계 : 두 Entity가 관계를 맺을 때, 양 쪽이 서로 참조 2. 다중성 @ManyToOne : 다대일 ( N : 1 ) ex) Member는 여러 구성원이 하나의 Team을 갖고 있으므로 Member 입장에서는 Team과 다대일 관계 @OneToMany : 일대다 ( 1 : N ) ex) Team은 여러 Member를 구성원으로 갖고 있으므로 .. 2022. 12. 21. [TIL] 2022-12-13(32day) JPA 심화 👉 영속성 컨텍스트 - 엔티티를 영구 저장 하는 환경 # JPA 엔티티의 상태 - 비영속(New) : 영속성 컨택스트와 관계가 없는 새로운 상태 (해당 객체의 데이터가 변경되거나 말거나 실제 DB의 데이터와는 관련없고, 그냥 Java 객체인 상태) // 엔티티를 생성 Member minsook = new Member(); member.setId("minsook"); member.setUsername("민숙"); - 영속(Managed) : 엔티티 매니저를 통해 엔티티가 영속성 컨텍스트에 저장되어 관리되고 있는 상태 (데이터의 생성, 변경등을 JPA가 추적하면서 필요하면 DB에 반영) // 엔티티 매니저를 통해 영속성 컨텍스트에 엔티티를 저장 em.persist(minsook); - 준영속(D.. 2022. 12. 14. 이전 1 다음