본문 바로가기

개발

hibernate id 생성 전략

increment

generates identifiers of type longshort or int that are unique only when no other process is inserting data into the same table. Do not use in a cluster.

클러스터에서는 사용하지 말것.

identity

supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL. The returned identifier is of type longshort or int.

sequence

uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase. The returned identifier is of type longshort or int

hilo

uses a hi/lo algorithm to efficiently generate identifiers of type longshort or int, given a table and column (by default hibernate_unique_key and next_hi respectively) as a source of hi values. The hi/lo algorithm generates identifiers that are unique only for a particular database.

seqhilo

uses a hi/lo algorithm to efficiently generate identifiers of type longshort or int, given a named database sequence.

uuid

uses a 128-bit UUID algorithm to generate identifiers of type string that are unique within a network (the IP address is used). The UUID is encoded as a string of 32 hexadecimal digits in length.

guid

uses a database-generated GUID string on MS SQL Server and MySQL.

native

selects identitysequence or hilo depending upon the capabilities of the underlying database.

assigned

lets the application assign an identifier to the object before save() is called. This is the default strategy if no<generator> element is specified.

select

retrieves a primary key, assigned by a database trigger, by selecting the row by some unique key and retrieving the primary key value.

foreign

uses the identifier of another associated object. It is usually used in conjunction with a <one-to-one>primary key association.

sequence-identity

a specialized sequence generation strategy that utilizes a database sequence for the actual value generation, but combines this with JDBC3 getGeneratedKeys to return the generated identifier value as part of the insert statement execution. This strategy is only supported on Oracle 10g drivers targeted for JDK 1.4. Comments on these insert statements are disabled due to a bug in the Oracle drivers.




jvm에 있는 유니크 밸류와 quarter second, system time를 사용해서 만들고

맥주소나 메모리주소를 얻을수 없기에 jni(자바 네이티브 인터페이스)를 사용하지 않는 가장 좋은 옵션이다. 

 

 Example 1:

 *

 *    @Id

 *     @GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")

 *     @Column(name="CUST_ID")