2008-12-24 30 views
12

Theo hiểu biết tốt nhất của tôi, việc tạo proxy Java động yêu cầu người dùng phải có giao diện để làm việc với proxy. Tuy nhiên, Hibernate dường như quản lý thế hệ proxy động của nó mà không yêu cầu một giao diện ghi cho các lớp thực thể. Làm thế nào nó làm điều này? Các đầu mối duy nhất từ ​​tài liệu Hibernate đề cập đến thực tế là các lớp phải có tối thiểu một nhà xây dựng có thể nhìn thấy gói để tạo proxy.Hibernate tạo proxy của các lớp bê tông như thế nào?

Hibernate có thực thi kỹ thuật bytecode thời gian chạy với trình nạp lớp tùy chỉnh không? Các tài liệu cho thấy rằng đây không phải là trường hợp. Vậy làm thế nào để họ tạo ra các trình bao bọc proxy của họ xung quanh các đối tượng thực thể cụ thể? Họ chỉ cần tạo một proxy của một số giao diện tầm thường mà không quan tâm đến an toàn kiểu và sau đó truyền nó như mong muốn?

Trả lời

3

Để sử dụng trình tạo proxy có trong java, vâng, bạn chính xác, nhưng tôi tin rằng việc sử dụng công nghệ ngủ đông CGLib để tạo proxy của nó.

http://cglib.sourceforge.net/

của một chương trình tuyệt vời, và không đòi hỏi giao diện để tạo ra một proxy.

(và có thể một ngày nào đó ngủ đông sẽ chuyển sang sử dụng AOP và thế giới sẽ là một nơi tốt hơn).

+0

vâng, nó sử dụng cglib –

4

Hibernate sử dụng các nhà cung cấp bytecode cấu hình trong hibernate.properties, ví dụ:

hibernate.bytecode.provider=javassist 
Các vấn đề liên quan