Sistem için Oracle veritabanı oluşturduğumda, ana anahtarı hibernate kullanarak oluşturma stratejisi SEQUENCE idi ve o zamanlar çok yorgun hissettim, çünkü nedenini bilmiyorum, oracle+sequence+trigger yeni veri eklerken birincil anahtar değerini alamıyor.
Bu sefer buna odaklanacağım ve iki yeni sorun var,
1。 Hangi hibernasyon stratejisi birincil anahtar üretirken daha iyi performansa sahiptir;
2。 Birincil anahtar üretim stratejileri ideal olarak çapraz veritabanı olmalıdır.
Herkes performanstan bahseder, oracle sırayı kullanır, bu yüzden birincil anahtar hâlâ bu şekilde üretilmek ister.
Sonra yeni veriyi döndürmek için birincil anahtar var
yerli Temel veritabanının yeteneklerine göre kimlik, sıra veya hilo seçimini seçin;
Yani, birincil anahtar üretilir ve bu anahtar hibernasyon tarafından seçilir.
Native ve Denity her ikisi de veritabanı kimliği seri numarası oluşturma stratejileridir, Native is Hibernate otomatik olarak seçilir ve oluşturulur, Identity kendi kendine seçilir, Identity MySQL, SQL2000 ve diğer veritabanı oluşturma yöntemleridir, ayrıca Oracle ve diğer üretim yöntemleri de sırası vardır, genel olarak Native Hibernate tarafından otomatik olarak seçilir
Dahili kimlik alanlarını destekleyen veritabanları için (DB2, MySQL, Sybase ve MS SQL) identity kapalı kullanılabilir Anahtar kelime üretimi. Dahili dizileri destekleyen veritabanları için (DB2, Oracle, PostgreSQL, Interbase, McKoi ve SAP). DB) gibi bir anahtar kelime oluşturma yöntemi kullanabilirsiniz. Her iki yaklaşımda da yeni bir nesne eklemek için iki kez gereklidir SQL sorguları.
Daha fazla çevrimiçi bilgi kontrol ettim, nerede gördüğümü bilmiyorum, bu birincil anahtar oluşturma stratejisi, eğer mysql ise, birincil anahtarı oluşturmanın auto_increment yolunu seçiyor; Eğer Oracle ise, dizi yöntemini seçecektir; Sadece, Oracle veritabanını kullanırken bir hibernate_sequence oluşturmanız gerekiyor, bu Hibernate tarafından ayrılmış ve eğer onu oluşturmazsanız (test edilmiş) hata rapor edecektir. |