본문 바로가기

JPA8

ddl-auto가 create인데 테이블 drop시 에러 발생 김영한님의 자바 ORM 표준 JPA 프로그래밍-기본편 강의를 들으며 실습하는 중 ddl-auto 옵션이 create인 상태에서 main을 실행했는데 테이블 drop할때 에러가 발생했다. 에러 내용 WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Item if exists" via JDBC Statement ... Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "ITEM" because "FK5SQ6D5AGRC34ITHPDFS0UMO9G" depends on it; SQL statement: drop table I.. 2021. 6. 10.
SpringBoot, SpringDataJpa, Maven 환경에 QueryDsl 적용하기 1. Maven 설정 의존성 추가 com.querydsl querydsl-apt com.querydsl querydsl-jpa 플러그인 추가 com.mysema.maven apt-maven-plugin 1.1.3 process src/main/generated com.querydsl.apt.jpa.JPAAnnotationProcessor 2. Java Config 설정 JPAQueryFactory를 주입받을 수 있게 하기 위해 빈으로 등록한다. @Configuration public class QueryDslConfig { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory jpaQueryFactory(.. 2021. 5. 27.
양방향 관계 맵핑 먼저 연관관계의 주인을 선정해야 한다. 단순하게 외래 키를 관리하는 쪽이 주인이다. 즉 ManyToOne 관계일 경우 Many쪽이 주인이다. 이제 차량 출고 도메인과 결제 수단 도메인으로 예시로 정리해보겠다. 차량을 출고하면 결제수단은 현금 or 카드 or 현금+카드일 수 있다. 따라서 출고와 결제수단은 1대 다의 관계를 갖는다. 결제수단 도메인(Payment) @ManyToOne(fetch = LAZY, cascade = ALL) @JoinColumn(name = "release_id") private Release release; @ManyToOne: 다대1관계, 결제수단이 외래키를 관리한다. @JoinColumn(name = "release_id"): Release 도메인의 ID 필드 column명.. 2021. 5. 20.
Id 필드에 @GeneratedValue(strategy = GenerationType Spring Boot는 Hibernate의 id 생성 전략을 그대로 따라갈지 말지를 결정하는 useNewIdGeneratorMappings 설정이 있다. 1.5에선 기본값이 false, 2.0부터는 true Hibernate 5.0부터 MySQL의 AUTO는 IDENTITY가 아닌 TABLE을 기본 시퀀스 전략으로 선택된다. 즉, 1.5에선 Hibernate 5를 쓰더라도 AUTO를 따라가지 않기 때문에 IDENTITY가 선택 2.0에선 true이므로 Hibernate 5를 그대로 따라가기 때문에 TABLE이 선택 자세한 내용은 이동욱님의 블로그에 아주 잘 정리가 되어 있으니 참고 링크로 대체한다. 참고 Spring Boot Data JPA 2.0 에서 id Auto_increment 문제 해결 2021. 5. 12.