JPA 구현 중 가장 널리 쓰이는 것들이 EclipseLink와 Hibernate이다.
JPA 2.0 이후로는 EclipseLink가 레퍼런스 구현임에도 일단 한국에서는 EclipseLink보다는 Hibernate를 더 많이 쓰는데, Hibernate가 아무래도 역사도 오래됐고 속도는 느리지만 그만큼 편의기능이 많아서 그렇지 않나 싶다.
한국에서 EclipseLink 미는 사람은 저밖에 없는듯?
여기서는 Hibernate 특유의 정신나간 특징들을 내 맘대로 (...) 찝어보겠다.
JPA 2.0 이후로는 EclipseLink가 레퍼런스 구현임에도 일단 한국에서는 EclipseLink보다는 Hibernate를 더 많이 쓰는데, Hibernate가 아무래도 역사도 오래됐고 속도는 느리지만 그만큼 편의기능이 많아서 그렇지 않나 싶다.
여기서는 Hibernate 특유의 정신나간 특징들을 내 맘대로 (...) 찝어보겠다.
SEQUENCE
를 지원하지 않는 DBMS(예를 들면 MSSQL이나 MySQL)를 타겟으로@GeneratedValue(strategy = GenerationType.SEQUENCE)
를 사용하면 좆된다.- Spring에서 엔티티를
@SessionAttribute
로 물릴 경우@ElementCollection
의fetch
속성을EAGER
로 설정해야 한다.
안그러면 나중에 엔티티 값을 수정할 때 초기화 되지 않았다고 뭐라 그런다. @ElementCollection
의fetch
속성을EAGER
로 설정했으면 Hibernate에서 제공하는@Fetch
로 긁어올 방식을 설정해 주어야 한다.
안붙여주면 처음 실행할 때부터 테이블 Alias가 없네 하면서 정신줄 놓는다.
일단은 여기까지.
더 밝혀낸 것이 있으면 계속 업데이트될 지도 모른다.