사용자 도구

사이트 도구


java:hibernate:annotations

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:hibernate:annotations [2018/07/10 08:56]
kwon37xi
java:hibernate:annotations [2022/01/20 03:42] (현재)
kwon37xi [@org.hibernate.annotations.DynamicUpdate]
줄 1: 줄 1:
 ====== Hibernate Annotations ====== ====== Hibernate Annotations ======
-하이버네이트 전용 어노테이션들+  * 하이버네이트 전용 어노테이션들 
 +  * [[https://dzone.com/articles/all-hibernate-annotations-mapping-annotations|All Hibernate Annotations: Mapping Annotations - DZone Java]]
  
 ===== CRUD 쿼리 직접 지정 ===== ===== CRUD 쿼리 직접 지정 =====
줄 23: 줄 24:
   * ''@SQLInsert'',, ''@SQLUpdate'', ''@SQLDelete'', ''@SQLDeleteAll''   * ''@SQLInsert'',, ''@SQLUpdate'', ''@SQLDelete'', ''@SQLDeleteAll''
   * SQL 파라미터의 순서가 매우 중요하다. 위 어노테이션들을 지정하기 전에 먼저 ''org.hibernate.persister.entity'' Log Level을 ''DEBUG''로 지정하고 보면 하이버네이트가 생성한 SQL과 파라미터 순서를 볼 수 있는데, 이와 똑 같은 순서로 SQL 파라미터를 지정해야 한다.   * SQL 파라미터의 순서가 매우 중요하다. 위 어노테이션들을 지정하기 전에 먼저 ''org.hibernate.persister.entity'' Log Level을 ''DEBUG''로 지정하고 보면 하이버네이트가 생성한 SQL과 파라미터 순서를 볼 수 있는데, 이와 똑 같은 순서로 SQL 파라미터를 지정해야 한다.
-  * Secondary Table에 대한 지정<code java>+  * Secondary Table에 대한 지정 
 +<code java>
 @Entity @Entity
 @SecondaryTables({ @SecondaryTables({
줄 35: 줄 37:
 public class Cat implements Serializable { public class Cat implements Serializable {
 </code> </code>
-  * Join Column에 대한 지정<code java>+  * Join Column에 대한 지정 
 +<code java>
 @OneToMany @OneToMany
 @JoinColumn(name="chaos_fk") @JoinColumn(name="chaos_fk")
줄 70: 줄 73:
   * ''update'' 구문 생성시 변경된 것에 대해서만 생성한다.   * ''update'' 구문 생성시 변경된 것에 대해서만 생성한다.
   * [[http://www.mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/|Hibernate – dynamic-update attribute example]]   * [[http://www.mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/|Hibernate – dynamic-update attribute example]]
 +  * [[https://thorben-janssen.com/dynamic-inserts-and-updates-with-spring-data-jpa/|Dynamic Inserts and Updates with Spring Data JPA]]
 ===== @org.hibernate.annotations.Immutable ===== ===== @org.hibernate.annotations.Immutable =====
   * [[https://docs.jboss.org/hibernate/orm/5.0/javadocs/org/hibernate/annotations/Immutable.html|@org.hibernate.annotations.Immutable]]   * [[https://docs.jboss.org/hibernate/orm/5.0/javadocs/org/hibernate/annotations/Immutable.html|@org.hibernate.annotations.Immutable]]
 +  * [[https://vladmihalcea.com/immutable-entity-jpa-hibernate/|How to map an immutable entity with JPA and Hibernate - Vlad Mihalcea]]
   * Entity나 immutable로 지정하면 수정이 작동하지 않게 된다.   * Entity나 immutable로 지정하면 수정이 작동하지 않게 된다.
   * Collection을 immutable로 지정하면 추가나 삭제가 작동하지 않게 된다.   * Collection을 immutable로 지정하면 추가나 삭제가 작동하지 않게 된다.
 +  * **''@Immutable''에 update를 날리면 오류 없이 그냥 무시**하고 넘어간다. 오류가 발생하게 하려면 설정이 필요하다.
 +  * 주의! : ''@Immutable'' 엔티티는 여전히 JPQL이나 Criteria로 업데이트 가능하다. 단, **5.2.17**부터는 업데이트를 막았으나 WARNING만 남긴다. 여기에 오류까지 발생시키려면 아래 프라퍼티를 설정한다. <code>
 +hibernate.query.immutable_entity_update_query_handling_mode=exception
 +</code>
 +    * [[https://github.com/hibernate/hibernate-orm/pull/2216|HHH-12387 - Immutable entities can be updated via bulk update queries by vladmihalcea · Pull Request #2216 · hibernate/hibernate-orm]]
 +
  
 ===== @org.hibernate.annotations.OptimisticLocking ===== ===== @org.hibernate.annotations.OptimisticLocking =====
java/hibernate/annotations.1531180603.txt.gz · 마지막으로 수정됨: 2018/07/10 08:56 저자 kwon37xi