2012-11-27 44 views

Trả lời

6

Những lý do cho điều này được giải thích trên Hibernate của Jira

https://hibernate.onjira.com/browse/HHH-2578

Hiện nay một SessionFactory được xây dựng bằng cách ném một bunch of stuff vào một đối tượng cấu hình, khuấy nó, để cho nó đi đến một đun sôi, và sau đó rút ra SessionFactory. Ở mức độ nghiêm trọng, có một vài vấn đề với cách chúng ta hiện đang hoạt động trong một cấu hình và cách chúng ta sử dụng nó để xây dựng một SessionFactory: Vấn đề chung là không có "vòng đời" khi có nhiều thông tin khác nhau. Đây là một thiếu sót quan trọng trong một số cách: 1) xem xét việc tạo lược đồ. hiện tại chúng tôi thậm chí không thể biết được phương ngữ khi có rất nhiều tên đối tượng db đang được xác định. điều này sẽ là tốt đẹp bởi vì nó sẽ cho phép chúng tôi minh bạch xử lý tên bảng/cột mà cũng là từ khóa/reserved-words trong phương ngữ, ví dụ. 2) kiểu tĩnh của các loại và ánh xạ kiểu. Bởi vì chúng tôi hiện không có gì để phạm vi chúng. Lý tưởng nhất là một thể hiện kiểu sẽ nhận thức được SessionFactory mà nó bị ràng buộc. Thay vào đó, những gì chúng ta có bây giờ là thay đổi các phương thức API khá nhiều thời gian để thêm vào SessionFactory như là một tham số được truyền bất cứ khi nào nó được phát hiện ra rằng nó là cần thiết. 3) cũng vậy, hầu hết (tất cả?) Của các tham số cấu hình "tĩnh" trong Hibernate hiện đang được yêu cầu là vì chúng sử dụng từ bên trong các kiểu tĩnh này; do đó các loại phạm vi sẽ cho phép chúng tôi cũng phạm vi các tham số cấu hình đó (những thứ như nhà cung cấp bytecode, sử dụng luồng nhị phân, v.v.). Lý tưởng nhất là những gì tôi thấy xảy ra là một chương trình mà người dùng xây dựng một thể hiện org.hibernate.cfg.Settings (hoặc một cái gì đó tương tự). Ngoài ra, họ sẽ áp dụng siêu dữ liệu cho một đăng ký của một số loại (cho phép gọi nó MetadataRegistry bây giờ). Sau đó, để xây dựng một SessionFactory, họ sẽ cung cấp hai mẩu thông tin này (thông qua ctor? Thông qua trình xây dựng?). Tuy nhiên, khía cạnh quan trọng là thông tin trong MetadataRegistry sẽ không được xử lý cho đến thời điểm đó, cho phép chúng ta bảo đảm rằng việc giải quyết tên đối tượng lược đồ, loại, v.v. sẽ có quyền truy cập vào các thiết lập thời gian chạy (và cụ thể là phương ngữ)

Bạn cũng có thể đọc nhận xét về điều này: https://hibernate.onjira.com/browse/HHH-7580 Quá nhiều để sao chép dán và tôi đoán Jira sẽ không đi xuống để câu trả lời này hợp lệ.

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