Tất cả các trình tạo đều triển khai giao diện org.hibernate.id.IdentifierGenerator. Đây là một giao diện rất đơn giản. Một số ứng dụng có thể chọn cung cấp các triển khai chuyên biệt của riêng mình, tuy nhiên, Hibernate cung cấp một loạt các triển khai được cài sẵn. Các tên shortcut cho các máy phát điện được xây dựng-in như sau:
increment
tạo ra định danh của loại dài, ngắn hoặc int mà là duy nhất chỉ khi không có quá trình khác được chèn dữ liệu vào cùng một bảng. Không sử dụng trong một cụm.
sắc
hỗ trợ cột sắc trong DB2, MySQL, MS SQL Server, Sybase và HypersonicSQL. Số nhận dạng được trả về là loại dài, ngắn hoặc int.
chuỗi
sử dụng một chuỗi trong DB2, PostgreSQL, Oracle, SAP DB, McKoi hoặc một máy phát điện trong Interbase. Từ định trở lại là loại dài, ngắn hoặc int
Hilo
sử dụng một thuật toán hi/lo để tạo ra hiệu quả định danh của loại dài, ngắn hoặc int, được đưa ra một bảng và cột (bằng hibernate_unique_key mặc định và next_hi tương ứng) như một nguồn giá trị hi. Thuật toán hi/lo tạo ra các định danh duy nhất chỉ cho một cơ sở dữ liệu cụ thể.
seqhilo
sử dụng một thuật toán hi/lo để tạo ra hiệu quả định danh dài, ngắn loại hoặc int, được đưa ra một chuỗi cơ sở dữ liệu được đặt tên.
uuid
sử dụng một thuật toán UUID 128-bit để tạo ra định danh kiểu string đó là duy nhất trong một mạng (địa chỉ IP được sử dụng). UUID được mã hóa dưới dạng chuỗi gồm 32 chữ số thập lục phân.
guid
sử dụng một GUID chuỗi cơ sở dữ liệu được tạo ra trên MS SQL Server và MySQL.
mẹ đẻ
chọn sắc, chuỗi hoặc Hilo phụ thuộc vào khả năng của cơ sở dữ liệu cơ bản.
giao
cho phép các ứng dụng gán một định danh cho các đối tượng trước khi tiết kiệm() được gọi. Đây là chiến lược mặc định nếu không có phần tử nào được chỉ định.
chọn
lấy một khóa chính, bằng cách kích hoạt một cơ sở dữ liệu được giao, bằng cách chọn hàng bởi một số khóa duy nhất và lấy giá trị khóa chính.
ngoại
sử dụng nhận dạng của một đối tượng liên quan. Nó thường được sử dụng kết hợp với một hiệp hội quan trọng chính.
chuỗi-sắc
một chiến lược thế hệ thứ tự đặc biệt mà sử dụng một chuỗi cơ sở dữ liệu cho thế hệ giá trị thực tế, nhưng kết hợp này với getGeneratedKeys JDBC3 để trả về giá trị định danh được tạo ra như một phần của việc thực hiện tuyên bố chèn. Chiến lược này chỉ được hỗ trợ trên các trình điều khiển Oracle 10g được nhắm mục tiêu cho JDK 1.4. Nhận xét về các câu lệnh chèn này bị tắt do lỗi trong trình điều khiển của Oracle.
Nếu bạn đang xây dựng một ứng dụng đơn giản với không nhiều người dùng đồng thời, bạn có thể đi increment, bản sắc, Hilo vv .. Đây là những đơn giản để cấu hình và không cần nhiều mã hóa bên trong db.
Cảm ơn bạn rất nhiều vì đã trả lời. Tôi đã xem tài liệu rồi. Tuy nhiên, tôi đang tìm kiếm lý do tại sao mọi người sẽ sử dụng một cái gì đó như hilo và seqhilo. Khi nào chúng ta thực hiện lựa chọn đó. Các trường hợp sử dụng để chọn. –
Khi có thứ gì đó đơn giản như trình tự hoặc hướng dẫn, điều gì có thể yêu cầu nhà phát triển chọn các con đường khác. –
Tôi đã cập nhật câu trả lời của mình. Trên thực tế ** tăng, nhận dạng, hilo ** vv .. đơn giản hơn. nhưng chúng không thích hợp cho các ứng dụng doanh nghiệp. Giữ tất cả các tùy chọn không phải là vấn đề, nhưng hãy đảm bảo bạn sử dụng tùy chọn phù hợp nhất cho mình! – ManuPK