Tôi có một lớp mô hình nhưLàm thế nào để có được một danh sách gõ đúng từ một ReflectionDBObject
public class MyClass extends ReflectionDBObject {
private List<NiceAttribute> attributes;
...
}
public class NiceAttribute extends ReflectionDBObject {
...
}
tôi tạo ra nó trong một cách typesafe, như
List<NiceAttribute> attrs = new ArrayList<NiceAttribute>();
attrs.add(new NiceAttribute());
MyClass myClass = new MyClass();
myClass.setAttributes(attrs);
sau đó lưu nó vào Mông Cổ, và lấy với một mã như
DBCollection col = ...;
col.setObjectClass(MyClass.class)
MyClass foundObject = (MyClass)col.findOne();
Nhưng vấn đề là foundObject
's attributes
trở thành một danh sách của BasicDBObject
. Có vẻ như một người lái xe không thể (hoặc không muốn) phát hiện một loại mục danh sách. Đây có phải là giới hạn trình điều khiển hay tôi đã bỏ lỡ điều gì đó? Điều gì sẽ là một giải pháp thanh lịch cho vấn đề này?
BTW, tôi biết về Morphia, v.v. Có thể giải quyết được vấn đề. Nhưng dự án của tôi rất nhỏ, và tôi không muốn làm phức tạp những thứ có thêm một lớp trừu tượng.
nha phiến được khoảng 10-15x chậm hơn người lái xe. Bạn nên viết mã của riêng mình để thực hiện ánh xạ. –
Chúng tôi có các xét nghiệm về hiệu suất trong morphia cho thấy điều này không đúng. Nếu bạn có một số bài kiểm tra cho thấy vấn đề hiệu suất này, nó sẽ là tốt nếu bạn có thể chia sẻ chúng. –
Tôi đã thực sự thực hiện các thử nghiệm rất cơ bản, nơi tôi viết cùng một mục nhập khoảng 10-20k lần, sử dụng trình điều khiển, sau đó là Spring Mongo Db rồi Morphia. Driver nhanh nhất, Spring Mongo chậm hơn khoảng 2 lần và morphia chậm hơn khoảng 7-10x. Ngay cả trên một mongo với sharding bộ sưu tập thực sự (trên nhiều máy) nó vẫn còn chậm hơn. Bạn có thể dễ dàng kiểm tra điều này. –