2009-07-08 59 views

Trả lời

7

Tôi không phải là một dba vì vậy tôi không thể cung cấp cho bạn một định nghĩa tốt về lược đồ ... (với tôi nó chỉ là 'cơ sở dữ liệu' trong SQL Server).

Trong NHibernate bạn có thể chỉ định lược đồ hai địa điểm: trong các tệp ánh xạ, trong cấu hình.

Tệp ánh xạ cho phép bạn chỉ định giản đồ cho mỗi lớp. Điều này là tốt khi bạn có các lớp đến từ lược đồ khác nhau trong cùng một máy chủ.

Cấu hình SessionFactory cho phép bạn chỉ định giản đồ mặc định (tùy chọn default_schema) nên được áp dụng cho tất cả các ánh xạ lớp không đặt rõ ràng lược đồ của chúng. Vì vậy, nó là một bắt tất cả.

Từ đọc liên kết của bạn, có vẻ như điều này có lợi trong hiệu suất vì khi bạn truy vấn bảng "Bar" mà không chỉ định lược đồ (nói cơ sở dữ liệu là "Foo" để lược đồ "Foo.dbo" trong SQL Server) kế hoạch truy vấn isn ' t được lưu trong bộ nhớ cache. Điều này có thể do SQL Server phải thử và giải quyết lược đồ nào để sử dụng bởi chuỗi kết nối của bạn (Danh mục ban đầu, Cơ sở dữ liệu, v.v.) thay vì có nó rõ ràng trong truy vấn ("Bar" ngầm - không được lưu trữ, "Foo.dbo .Bar "rõ ràng - được lưu trong bộ nhớ cache).

Một lần nữa, tôi không phải là một dba do đó, những định nghĩa mút :)

chỉnh sửa:

Dưới đây là một liên kết đến các công cụ cấu hình (đối với NH 1.2 ... đó là cũ ... nhưng tùy chọn default_schema là có):

https://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/session-configuration.html