[Course Project] Генериране на ID в entity клас при работа с RDBMS ORACLE 11
Здравейте,
Колеги мисля, че всеки ще срещне проблема с автоматичното генериране на ID (PK) в определена таблица. В Oracle 11 няма "autoincrement" индекс, за разлика от следващата му версия.
След защитата на колегата днес се оказа, че има и по-чист вариант за генерирането му освен да се пише sql за вземане на последния индекс директно от базата. Видях две решения и не знам коя е по-добрата практика.
Има и трето решение със sql, но не знам как да го ползвам в entity класа.
Sequence Strategy:
@Entity @SequenceGenerator(name="seq", initialValue=1, allocationSize=10000) public class EntityWithSequenceId { // Use the sequence that is defined above: @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq") @Id long id; }
Table Strategy:
@Entity @TableGenerator(name="tab", initialValue=0, allocationSize=50) public class EntityWithTableId { @GeneratedValue(strategy=GenerationType.TABLE, generator="tab") @Id long id; }
Има и един вариант директно да се напише в базата следния sql за създаване на поредица :
CREATE SEQUENCE emp_sequence INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE CACHE 10;
Здравей,
Аз ти благодаря за отговора.
Според теб това е верния подход:
в приложението да се напише в съответния entity клас:
@Entity
@SequenceGenerator(name="seq", initialValue=1, allocationSize=10000)
public class EntityWithSequenceId {
// Use the sequence that is defined above:
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
@Id long id;
}
и
в базата де се изпълни това
CREATE SEQUENCE seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;