2011-09-19 30 views
2

我使用的代碼 Object object = session.load(Class.forName(javaType), objectId);Hibernate的對象和Java反射

以下行加載懶洋洋地從休眠狀態的對象。如果我打印object.getClass().getSimpleName()它顯示休眠代理的名稱,而不是我的實現類如預期。

但是如果我再使用這個代理對象上反射如下返回的屬性叫孩子: List children = (List) object.getClass().getMethod("getChildren", new Class[ {}).invoke(object, new Object[]{});

它返回對象的列表,其中object.getClass().getSimpleName()上的任何對象返回實現類的名稱。爲什麼這些對象不返回代理對象名稱?

回答

0

列表本身可以延遲加載,但是如果枚舉元素,則需要執行sql查詢,並且不會爲每個元素創建代理(相反)會有性能增益。