문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
java:hibernate:annotations [2016/01/27 21:47] kwon37xi |
java:hibernate:annotations [2018/10/04 11:17] kwon37xi [@org.hibernate.annotations.Immutable] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Hibernate Annotations ====== | ====== Hibernate Annotations ====== | ||
하이버네이트 전용 어노테이션들 | 하이버네이트 전용 어노테이션들 | ||
+ | |||
+ | ===== CRUD 쿼리 직접 지정 ===== | ||
+ | * [[https:// | ||
+ | |||
+ | <code java> | ||
+ | @Entity | ||
+ | @Table(name=" | ||
+ | @SQLInsert( sql=" | ||
+ | @NamedNativeQuery(name=" | ||
+ | public class Chaos { | ||
+ | @Id | ||
+ | private Long id; | ||
+ | private Long size; | ||
+ | private String name; | ||
+ | private String nickname; | ||
+ | </ | ||
+ | |||
+ | * '' | ||
+ | * Entity 단건 SELECT 에 대한 쿼리를 HQL, Native Query로 지정할 수 있다. | ||
+ | * namedQuery로 만들어 놓고, 그 nameQuery 이름을 지정해준다. | ||
+ | * '' | ||
+ | * SQL 파라미터의 순서가 매우 중요하다. 위 어노테이션들을 지정하기 전에 먼저 '' | ||
+ | * Secondary Table에 대한 지정 | ||
+ | <code java> | ||
+ | @Entity | ||
+ | @SecondaryTables({ | ||
+ | @SecondaryTable(name = "`Cat nbr1`" | ||
+ | @SecondaryTable(name = " | ||
+ | @org.hibernate.annotations.Tables( { | ||
+ | @Table(appliesTo = " | ||
+ | @Table(appliesTo = " | ||
+ | sqlInsert=@SQLInsert(sql=" | ||
+ | } ) | ||
+ | public class Cat implements Serializable { | ||
+ | </ | ||
+ | * Join Column에 대한 지정 | ||
+ | <code java> | ||
+ | @OneToMany | ||
+ | @JoinColumn(name=" | ||
+ | @SQLInsert( sql=" | ||
+ | private Set< | ||
+ | </ | ||
===== @org.hibernate.annotations.ForeignKey ===== | ===== @org.hibernate.annotations.ForeignKey ===== | ||
- | * '' | + | |
+ | | ||
* 이를 명시하지 않으면 '' | * 이를 명시하지 않으면 '' | ||
* '' | * '' | ||
줄 10: | 줄 53: | ||
* [[https:// | * [[https:// | ||
* 컬럼에서 데이터를 저장하거나 읽기 전에 변환 과정을 거칠 수 있다. | * 컬럼에서 데이터를 저장하거나 읽기 전에 변환 과정을 거칠 수 있다. | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * Field에 지정할 때는 '' | ||
- | ===== @org.hibernate.annotations.Entity | + | <code java> |
- | * [[https:// | + | @Column |
+ | @ColumnTransformer(read = “pgp_sym_decrypt(creditCardNumber, | ||
+ | private String creditCardNumber; | ||
+ | </ | ||
+ | |||
+ | ===== @org.hibernate.annotations.DynamicInsert | ||
+ | * [[https:// | ||
+ | * '' | ||
* [[http:// | * [[http:// | ||
+ | |||
+ | ===== @org.hibernate.annotations.DynamicUpdate ===== | ||
+ | * [[https:// | ||
+ | * '' | ||
* [[http:// | * [[http:// | ||
- | <code java> | + | |
- | @org.hibernate.annotations.Entity( | + | ===== @org.hibernate.annotations.Immutable ===== |
- | | + | * [[https:// |
- | | + | * [[https:// |
- | ) | + | * Entity나 immutable로 지정하면 수정이 작동하지 않게 된다. |
+ | * Collection을 immutable로 지정하면 추가나 삭제가 작동하지 않게 된다. | ||
+ | * **'' | ||
+ | * 주의! : '' | ||
+ | hibernate.query.immutable_entity_update_query_handling_mode=exception | ||
</ | </ | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | ===== @org.hibernate.annotations.OptimisticLocking ===== | ||
+ | * [[https:// | ||
+ | * 낙관적 잠금의 방식을 지정한다. | ||
+ | * [[https:// | ||
+ | |||
+ | ===== @org.hibernate.annotations.Persister ===== | ||
+ | * [[https:// | ||
+ | |||
+ | ===== @org.hibernate.annotations.Polymorphism ===== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | ===== @org.hibernate.annotations.SelectBeforeUpdate ===== | ||
+ | *[[https:// | ||