jpa

jpa

[jpa] name-native-query 에러 Could not locate appropriate constructor on class

Could not locate appropriate constructor on class ... 이러한 에러가 날 때 주요 이유 1. nativeQuery를 써줬는지 확인 @Query(nativeQuery = true) //써줬는지 확인 List getFacilityNativeQuery(); 2. xml로 사용하는경우 application.yml에 xml매핑을 해줬는지 확인 jpa: mapping-resources: - query/named-native-query-sample.xml //확인 3. DTO매핑 맞는지 확인 //패키지 맞는지 확인 //순서대로 써져있어야 함. //Entity의 타입이 아닌, DB의 타입과 맞아야 함 4. Column의 순서가 DTO의 순서와 맞는지 확인 DTO의 constru..

jpa

[JPA] QueryDSL JPA 사용하기

QueryDSL이란? QueryDSL은 오픈소스 프로젝트로 처음에는 HQL을 코드로 작성해줄 수 있는 프로젝트로 시작해서 지금은 JPA, JDO, JDBC, Lucene, Hibernate Search, mongoDB, 자바 컬렉션 등 다양하게 지원한다. JPQL과 달리 문자가아닌 코드로 작성하므로 오류를 덜 수 있고, Criteria보다는 덜 복잡하다는 장점이 있다. http://querydsl.com/static/querydsl/3.6.3/reference/ko-KR/html_single/ Querydsl - 레퍼런스 문서 본 절에서는 SQL 모듈의 쿼라 타입 생성과 쿼리 기능을 설명한다. com.mysema.query.sql.Configuration 클래스를 이용해서 설정하며, Configurati..

jpa

[jpa] Spring Data Jpa는 왜 interface만 생성해줘도 작동할까? + Spring Data Jpa 확장하기

Spring Data Jpa는 왜 interface만 생성해줘도 작동하는지에 대한 궁금증이 생겼다. 일단 먼저 spring data jpa의 기본적은 사용법부터 잠깐 보자. Spring Data Jpa사용법 interface JpaRepository를 extends받아서 새로운 interface를 만들어 사용한다. public interface CrudRepository extends Repository { //Repository는 marker repository //CrudRepository는 기본적인 CRUD내용을 담고있음 public interface PagingAndSortingRepository extends CrudRepository {...} //PagingAndSortingRepositor..

jpa

[JPA] entity uses both @NotFound(action = NotFoundAction.IGNORE) and FetchType.LAZY. The NotFoundAction.IGNORE @ManyToOne and @OneToOne associations are always fetched eagerly.

개발 중에 이러한 warning을 발견했다. ... M_OP_LINK] entity uses both @NotFound(action = NotFoundAction.IGNORE) and FetchType.LAZY. The NotFoundAction.IGNORE @ManyToOne and @OneToOne associations are always fetched eagerly. FetchType.LAZY로 써줬는데, EAGER로 동작하더라 warning을 해석해보면 ~One으로 끝나는 join 은 NotFoundAction.IGNORE와 FetchType.LAZY를 함께쓰면 언제나 FetchType.EAGER로 동작한다는 것을 알 수 있다. 왜 그럴까? 먼저 LAZY가 어떻게 동작하는지 보자. 예를 들어서 ..

jpa

[jpa] 지연로딩과 즉시로딩 FetchType.EAGER, LAZY, 프록시

지연로딩과 즉시로딩 JPA는 객체 그래프로 연관된 객체들을 탐색하는데, 객체가 DB에 저장되어있으므로 마음껏 탐색하기 어렵다. 따라서 처음부터 객체를 조회하지 않고, 실제 사용하는 시점에 조회한다.(이때 프록시를 이용한다.) 이것을 지연로딩이라고 한다. 하지만, 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는게 효과적이다. 이렇게 로딩하는 방식을 즉시 로딩이라고 한다. 아래 예제를 보자. @Data @Entity public class Member { private String username; @ManyToOne private Team team; } @Data @Entity public class Team { private String name; } //비즈니스로직 1 : 회원의 팀을 조회 ..

jpa

[jap] jpa entity 변수명 대소문자 바뀜

mapstruct를 쓰다가 jpa의 entity변수명과 다른 변수명이 mapping이 안됬다면서, 빌드가 안되는 오류가 발생했다. 엔티티의 변수명은 xCrdnt인데 mapstruct에서는 XCrdnt로 해야 된다. JPA에서 두번째 글자가 대문자면 첫번째 글자가 자동으로 대문자로 바뀌어 버린다고 한다...........

jpa

[jpa] 양방향 매핑 깊게 알아보기, JOIN(@OneToMany, @ManyToOne), where조건으로 select하기

예제 Entity, Member와 Order Member와 Order 두가지 Entity를 생성해준다. H2데이터베이스를 사용했다. 두 엔티티는 아래와 같다. @Entity @Table(name = "MEMBER") @SequenceGenerator( name = "HIBERNATE_SEQUENCE", sequenceName = "MEMBER_SEQ", initialValue = 1, allocationSize = 1 ) public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @NotNull private String name; @Nullable private String city; @Nullable pr..

우주유령
'jpa' 카테고리의 글 목록