오라클의 최대 절전 모드 시퀀스인 @GeneratedValue(전략 = GenerationType).자동)
@GeneratedValue(전략 = GenerationType)를 사용합니다.AUTO) - 엔티티에 대한 ID를 생성합니다.
어떻게 작동하는지는 모르겠지만, 제 자식 테이블에서는 부모 순서를 따르는 ID 값을 생성합니다.
//parent table
@Entity
@Table (name = "parent")
public class Parent {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
@OneToMany (cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn (name = "parentId")
@ForeignKey (name = "FKparent")
private List<child> child;
}
//child table
@Entity
@Table (name = "child")
public class Child {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
}
상위 항목에 삽입된 ID 값은 시퀀스를 업데이트합니다.하위에 삽입된 ID 값은 시퀀스를 업데이트합니다.부모님의 다음 삽입에서, 순서는...하위 삽입으로 업데이트된 값 사용...
이 주석은 두 개의 시퀀스를 만드는 것이 아니라 하나만 만듭니다.이것이 정확합니까?
DAO 서비스를 사용하여 엔티티를 삽입했습니다.entityManager.persist(parent);
이러한 주석은 두 개의 시퀀스를 만드는 것이 아니라 하나의 시퀀스만 만드는 것입니다.이것이 정확합니까?
그것이 예상되는 행동입니다.사용 시@GeneratedValue(strategy = GenerationType.AUTO)
JPA 제공업체는 특정 데이터베이스에 적합한 전략을 선택합니다.Oracle의 경우 이 시퀀스는 SEQUENCE가 되며, 사용자가 아무것도 지정하지 않았기 때문에 Hibernate는 다음과 같은 단일 글로벌 시퀀스를 사용합니다.hibernate_sequence
.
이거 맞는건가요?글쎄요, 그건 당신의 필요에 따라 달라요.Oracle 시퀀스의 기본 최대값은 1E+27 또는 1,000,000,000,000,000,000,000입니다.많은 사람들이 이 정도면 충분합니다.
이제 사용할 수 있습니다.GenerationType.AUTO
데이터베이스가 시퀀스를 사용할 때 시퀀스 이름을 계속 제어합니다.
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
private Long id;
예, 이것은 정확하고 예상되는 것입니다.
각 테이블에 대해 개별 시퀀스를 만들 수 있지만 IMHO는 실제 이점이 없는 추가 코드일 뿐입니다.
@Entity
@Table(name = "table_seq")
@SequenceGenerator(name= "NAME_SEQUENCE", sequenceName = "SEQ_ID", initialValue=1, allocationSize = 1)
public class SeqEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="NAME_SEQUENCE")
private Long id;
}
언급URL : https://stackoverflow.com/questions/3068692/hibernate-sequence-on-oracle-generatedvaluestrategy-generationtype-auto
'programing' 카테고리의 다른 글
대상 셀에서 다른 셀의 공식을 가져오는 중 (0) | 2023.07.03 |
---|---|
GitHub에서 프로젝트를 복제한 후 Git 하위 모듈 가져오기 (0) | 2023.07.03 |
계산된 데이터가 Vue에서 업데이트되지 않음 (0) | 2023.07.03 |
설명 작업을 사용하여 열의 주석을 표시하는 방법 (0) | 2023.07.03 |
매개 변수를 SQL Command로 전달하는 가장 좋은 방법은 무엇입니까? (0) | 2023.07.03 |