728x90 JPA14 jpa @GeneratedValue 기본키 매핑 어노테이션 @Id에 대하여 직접 할당할 땐 @Id만 사용하고, @Id가 선언된 필드에 기본키 값을 자동으로 할당할 때 @GeneratedValue 사용 자동생성은 객체 생성 뒤 직접 코드로 setId()안해줘도 JPA가 알아서 값을 id에 넣어준다는 것이다. @GeneratedValue 전략 (사용예 : @GeneratedValue(starategy = GenerationType.IDENTITY) IDENTITY 전략의 특징 - 기본키 생성을 데이터베이스에 위임하고 주로 MySQL, SQL Server, DB2에서 사용 - 예를 들자면 MySQL을 사용한다면 auto_increment로 지정해서 DDL을 만든다. 1차 캐시에는 @Id와 @Entity로 지정한 것들이 들어간다. 그런데 기본키의.. 2022. 4. 16. QueryDsl, data jpa 하나의 레포지토리 사용 클래스, 인터페이스 구조 최종 사용하는 레포지토리 (MemberDataRepository) import java.util.Optional; @EnableJpaRepositories /** * 실제 사용하는 리포지토리 * 단순한 CRUD 쿼리는 여기서 작성 */ public interface MemberDataRepository extends JpaRepository, MemberCustomRepository { Member findMemberByEmail(String email); } MemberCustomRepository import java.util.List; @Repository //커스텀 인터페이스 쿼리 작성 public interface MemberCustomRepository { Long e.. 2022. 3. 10. Spring Data Jpa repository 통합 @Repsository 어노테이션 안 붙여줘도 빈 등록한다. 2022. 2. 23. 스프링 데이터 JPA 복잡한 정적 쿼리 @Query @Query 어노테이션 사용 장점 : 컴파일시 문법오류 체크 package com.study.datajpa.repository; import com.study.datajpa.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; public interface MemberRepository extends JpaRepository { List findByUsername(String userna.. 2021. 10. 22. JPA 페이징 * JPA는 페이징을 2가지로 추상화 setFirstResult(int startPosition) : 조회 시작 위치 (0부터 시작) setMaxResults(int maxResult) : 조회할 데이터 수 2021. 9. 3. 상속 관계 매핑 슈퍼타입 서브 타입 놀리 모델을 실제 물리 모델로 구현하는 방법 1.조인 전략 장점 테이블 정규화 외래키 참조 무결성 제약조건 활용가능 단점 조회시 조인을 많이 사용, 성능 저하 조회 쿼리가 복잡함 데이터 저장시 insert sql 2번 호출 2.단일 테이블 전략 장점 조인이 필요 없으므로 일반적으로 조회 성능이 빠름 조회 쿼리가 단순함 단점 자식 엔티티가 매핑한 컬럼은 모드 null 허용 단일테이블에 모든 것을 저장하므로 테이블이 커질 수 있다. # JPA 기본정책은 단일 테이블 전략이다 3.구현 클래스마다 테이블 전략 장점 서브 타입을 명확하게 구분해서 처리할 때 효과적 Not null 제약조건 사용 가능 단점 여러 자식 테이블을 함께 조회할 때 성능이 느림 자식 테이블을 통합해서 쿼리하기 어려움 슈.. 2021. 8. 31. JPA 필드와 컬럼 매핑 출처 인프런 김영한 강사님 ORM 표준 JPA 프로그래밍 기본편 https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 2021. 8. 26. JPA 엔티티 생성시 테이블 명 및 칼럼 명 변경 @Table 어노테이션(테이블 명 변경) @Column 어노테이션(컬럼명 변경) 2021. 8. 25. Maven 프로젝트에서 JPA 사용 main -> resources -> META_INF (폴더 생성) -> persistence.xml 생상 XML 설정 실행 시켰을때 이렇게 나오면 정상 # Persistence.createEntityManagerFactory("hello"); 여기서 "hello"는 persistence.xml 에서 의 name 값이다 2021. 8. 24. JPA 엔티티 설계시 주의점 1. 엔티티에는 가급적 Setter를 사용하지 말자 2. 모든 연관관계는 지연로딩으로 설정! 3. 컬렉션은 필드에서 초기화 하자. 2021. 8. 22. JPA 테이블 컬럼명 생성 전략 테이블, 컬럼명 생성 전략 스프링 부트에서 하이버네이트 기본 매핑 전략을 변경해서 실제 테이블 필드명은 다름 https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#howtoconfigure-hibernate-naming-strategy http://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#naming 하이버네이트 기존 구현: 엔티티의 필드명을 그대로 테이블의 컬럼명으로 사용 ( SpringPhysicalNamingStrategy ) 스프링 부트 신규 설정 (엔티티(필드) 테이블(컬럼)) 1. 카멜 케이스 언더스코어(mem.. 2021. 8. 22. 인텔리제이 JPA 설정 Project Structure - > main -> JPA 추가 -> Hibernate -> OK 2021. 8. 21. JPA 쿼리 및 로그 확인 .yml 파일 또는 .properties 파일에 로깅 추가 테스트 확인 쿼리 파라미터 로그 남기기(p6spy) 외부 라이브러러리 사용 https://github.com/gavlyukovskiy/spring-boot-data-source-decorator GitHub - gavlyukovskiy/spring-boot-data-source-decorator: Spring Boot integration with p6spy, datasource-proxy, flexy-pool and s Spring Boot integration with p6spy, datasource-proxy, flexy-pool and spring-cloud-sleuth - GitHub - gavlyukovskiy/spring-boot-d.. 2021. 8. 21. 스프링 부트 웹 프로젝트 생성시 기본 설정파일 2021. 8. 20. 이전 1 다음 728x90