2013-08-06 28 views
30

tôi đang xem xét các tài sản cấu hình Hibernate hbm2ddl.auto và giá trị có thể của nó:Hibernate hbm2ddl.auto, giá trị có thể, và những gì họ làm

  • validate
  • update
  • create
  • create-drop

Tất cả các giá trị này làm gì?

Các Hibernate Reference Documentation chỉ nói ngắn gọn về create-drop, nhưng không nói bất cứ điều gì về các giá trị khác:

hibernate.hbm2ddl.auto

Tự động xác nhận hoặc xuất khẩu schema DDL để cơ sở dữ liệu khi SessionFactory được tạo ra. Với create-drop, giản đồ cơ sở dữ liệu sẽ bị xóa khi SessionFactory đóng một cách rõ ràng.

ví dụ:validate | update | create | create-drop

tôi thấy rất giải thích hữu ích trong những câu hỏi Stack Overflow:

Nhưng vẫn không có gì trong tài liệu chính thức.

+1

Kiểm tra câu trả lời cho câu hỏi này: http://stackoverflow.com/questions/438146/hibernate-hbm2ddl-auto-possible- giá trị-và-cái gì-họ-làm –

+0

Thực ra, tôi đã liên kết với câu hỏi này. Tôi đang tìm kiếm giải thích * chính thức trong tài liệu Hibernate. –

Trả lời

11

Liên kết bạn cung cấp đã là tài liệu chính thức. Vì vậy, hôm nay không có gì chính thức và toàn diện hơn.

Vì vậy, tôi đoán câu trả lời cho câu hỏi của bạn là hai lần:

tôi biết đây không phải là câu trả lời hoàn hảo mà bạn mơ ước, nhưng đây thực sự là tất cả những gì bạn có ngày hôm nay.

Nhưng tin tốt là dự án là nguồn mở, vì vậy bạn có tất cả những gì bạn cần để giúp cải thiện nó :-).

+1

Đã tạo một vấn đề với đề xuất dự kiến: https://hibernate.atlassian.net/browse/HHH-8789 –

50

Đối hbm2ddl.auto sở hữu danh sách các tùy chọn có thể là:

  • Validate: xác nhận rằng giản đồ phù hợp, làm cho không có thay đổi đối với giản đồ cơ sở dữ liệu, bạn có thể muốn điều này để sản xuất.
  • cập nhật: cập nhật các giản đồ để phản ánh các đối tượng được tồn
  • tạo: tạo giản đồ cần thiết cho các tổ chức của bạn, phá hủy bất kỳ dữ liệu trước đó.
  • tạo-thả: tạo lược đồ như trong tạo ở trên, nhưng cũng thả lược đồ vào cuối phiên. Điều này là rất tốt trong phát triển sớm hoặc để thử nghiệm.
+0

Tôi đã cố gắng xóa các câu trả lời của bạn, vui lòng xem lại các thay đổi của tôi để đảm bảo chúng phản ánh ý định ban đầu của bạn và chính xác. – ArtB

+1

lưu ý rằng ** cập nhật ** sẽ không tạo bảng không tồn tại, trong khi ** tạo ** sẽ luôn cắt bớt bất kỳ dữ liệu hiện có nào. không có cách nào để có một cách tự động để nói hibernate để ** tạo bảng chỉ nếu nó chưa tồn tại ** – humanityANDpeace

Các vấn đề liên quan