[JPA] 쿼리 어노테이션(Query Annotation) 에러(expression or DISTINCT expected, got)해결
인텔리제이를 사용하면 Spring 프레임워크를 사용하는데 많은 도움을 받을 수 있다.
친구가 인텔리제이로 공부하던 중에 JPA 쿼리어노테이션 에러가 떠서 나한테 물어봤는데 나도 정확히 잘 몰라서 이참에 함께 공부해봤다.
인텔리제이를 사용하면 Spring 프레임워크를 사용하는데 많은 도움을 받을 수 있다.
친구가 인텔리제이로 공부하던 중에 JPA 쿼리어노테이션 에러가 떠서 나한테 물어봤는데 나도 정확히 잘 몰라서 이참에 함께 공부해봤다.
JPA를 사용 중 아래 코드를 만났고 의문이 생겼다.
@CreatedDate를 사용하여 save()메서드로 데이터를 insert하는데 날짜가 null로 나왔다.
이런 오류는 대부분 auditing이 제대로 적용되지 않았을때 발생한다.
JPA에서 복합키에서 식별관계를 매핑 즉, 복합키를 설정한 뒤 복합키 중 하나는 FK조건을 걸어보자.
MariaDB와 JPA로 복합키이면서 그 중 하나는 FK인 테이블을 만들고 싶었는데 계속해서 FK 에러가 발생했다.
MVC패턴 스프링프로젝트에서 Controller에서 Service를 의존성 주입할때 대부분 @Autowired로 필드주입을 한다.
하지만 JPA를 사용하는 경우 @Autowired 필드 주입보다는 생성자 주입 사용을 권장한다.
그 이유가 무엇인지 알아보자.
JPA 테스트코드를 공부하면서 패턴에 대해 궁금해졌다.
DTO를 Entity(참고: Entity와 DTO차이)로 변경할 때 주로 3가지 생성 패턴이 쓰인다.
JPA프로젝트를 구글링하다보면 Entity와 DTO를 필드가 거의 똑같은데 나눠서 작성한다.
왜 그렇게 해야할까?
Entity 클래스를 데이터베이스와 맞닿은 핵심 클래스로 Request/Response 클래스로 사용하면 안되기 때문이다.
JPA(Java Persistnece API)란
JPA를 왜 사용할까? SQL 중심적인 개발에서 객체중심으로 개발이 가능하고 CRUD와 같은 간단한 메서드 생산성이 올라간다.
JPA VS JDBC 포스팅에 DB CONNECT 프로그램에 대해 자세히 정리해놓았다.