|
|
게시됨 2017. 4. 7. 오전 10:02:04
|
|
|

제가 마지막으로 시스템용 Oracle 데이터베이스를 만들었을 때, 하이버네이트를 사용해 기본 키를 생성하는 전략은 SEQUENCE였는데, 그때는 매우 피곤했어요. 왜 그런지 모르겠지만, oracle+sequence+trigger가 새 데이터를 추가할 때 기본 키 값을 얻지 못했거든요.
이번에는 이 부분에 집중하겠다. 그리고 두 가지 새로운 문제가 있다,
1。 주요 키를 생성하는 최대 절전 전략 중 어느 것이 더 나은 성능을 가진다;
2。 주요 키 생성 전략은 이상적으로는 데이터베이스 간 교차 연동이어야 합니다.
모두가 성능에 대해 이야기하지만, 오라클은 시퀀스를 사용하기 때문에 기본 키는 여전히 이런 방식으로 생성되길 원합니다.
그리고 새 데이터를 반환하는 기본 키가 있습니다
원주민 기본 데이터베이스의 능력에 따라 식별자, 순서, 또는 hilo 중 하나를 선택하세요;
즉, 주요 키가 생성되며, 이는 최대 절전 상태에서 선택됩니다.
네이티브와 Denity는 모두 데이터베이스 ID 일련번호 생성 전략이며, 네이티브는 절전 모드(Native is Hibernate)를 자동으로 선택하고 생성하며, Identity는 스스로 선택, Identity는 MySQL, SQL2000 및 기타 데이터베이스 생성 방법, 그리고 Oracle 및 기타 생성 방법의 순서도 있습니다. 일반적으로 네이티브는 Hibernate에 의해 자동으로 선택됩니다
내부적으로 아이덴티티 필드를 지원하는 데이터베이스(DB2, MySQL, Sybase, MS SQL)에서는 아이덴티티 오프를 사용할 수 있습니다 핵심 단어 생성. 내부적으로 서열을 지원하는 데이터베이스(DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP)를 위한 경우입니다. DB), 시퀀스 스타일의 키워드 생성을 사용할 수 있습니다. 두 방법 모두 새로운 객체를 삽입하는 데 두 번이 필요합니다 SQL 쿼리.
온라인 정보를 더 찾아봤는데, 어디서 본 건지 모르겠어요. 이 기본 키를 생성하는 전략, 만약 mysql이라면, 그는 기본 키를 생성하는 방법을 auto_increment 선택한다고 하더군요; 오라클이라면 순서 방식을 선택하는데; 오라클 데이터베이스를 사용할 때는 Hibernate가 예약한 hibernate_sequence를 만들어야 하며, 빌드(테스트됨)하지 않으면 오류가 발생합니다. |
이전의:클래스 내 정적, 비정적, 구성적 메서드의 실행 순서 요약다음:동시 타임스탬프와 동시성 확인 구분 처리
|