57
魔獸
hibernate中的lazy的proxy no-proxy
舉個例子吧:
Child <- many-to-one ->Parent
class Child {
private Parent parent;
public Parent getParent (){
return this.parent;//訪問了實例變量
}
}
class Parent {
private String name;
public String getName(){
return this.name;//訪問了實例變量
}
public void f(){
System.out.println("invokeing f()");//沒有訪問實例變量
}
}
如果 many-to-one 的lazy設為proxy,當child.getParent().getName()或child.getParent().f()時,parent都會被抓取,若設為no-proxy,調用child.getParent().f()時,parent是不會被抓取的,同時這種方式需要編譯時字節碼增強,否則和proxy沒區別。 (注:測試發現真和proxy一樣,不能理解 編譯時字節碼增強,要再哪修改,或是什麼條件?)
如果設置了 lazy="proxy",就當通過 child 來調用其關聯的 parent, 如果調用 parent 類中定義的任何方法,都會抓取 parent (所謂的抓取是不是就是從數據庫查詢,執行一次 select ?)
如果設置了 lazy="no-proxy" ,隻有調用 parent 類中牽涉到類變量的方法,才會抓取 parent,否則,就像調用 f(), 不會抓取 parent
"編譯時字節碼增強" 是什麼意思?
"字節碼增強"分編譯期和運行期2種,編譯期是修改java類編譯後的class字節碼文件,在上麵附加“增強”操作。(不明白why?)
lazy (可選 - 默認為 proxy): 默認情況下,單點關聯是經過代理的。lazy="no-proxy"指定此屬性應該在實例變量第一次被訪問時應該延遲抓取(fetche lazily)(需要運行時字節碼的增強)。 lazy="false"指定此關聯總是被預先抓取。注意,如果constrained="false", 不可能使用代理,Hibernate會采取預先抓取!
原帖地址:https://apps.hi.baidu.com/share/detail/38568475
Child <- many-to-one ->Parent
class Child {
private Parent parent;
public Parent getParent (){
return this.parent;//訪問了實例變量
}
}
class Parent {
private String name;
public String getName(){
return this.name;//訪問了實例變量
}
public void f(){
System.out.println("invokeing f()");//沒有訪問實例變量
}
}
如果 many-to-one 的lazy設為proxy,當child.getParent().getName()或child.getParent().f()時,parent都會被抓取,若設為no-proxy,調用child.getParent().f()時,parent是不會被抓取的,同時這種方式需要編譯時字節碼增強,否則和proxy沒區別。 (注:測試發現真和proxy一樣,不能理解 編譯時字節碼增強,要再哪修改,或是什麼條件?)
如果設置了 lazy="proxy",就當通過 child 來調用其關聯的 parent, 如果調用 parent 類中定義的任何方法,都會抓取 parent (所謂的抓取是不是就是從數據庫查詢,執行一次 select ?)
如果設置了 lazy="no-proxy" ,隻有調用 parent 類中牽涉到類變量的方法,才會抓取 parent,否則,就像調用 f(), 不會抓取 parent
"編譯時字節碼增強" 是什麼意思?
"字節碼增強"分編譯期和運行期2種,編譯期是修改java類編譯後的class字節碼文件,在上麵附加“增強”操作。(不明白why?)
lazy (可選 - 默認為 proxy): 默認情況下,單點關聯是經過代理的。lazy="no-proxy"指定此屬性應該在實例變量第一次被訪問時應該延遲抓取(fetche lazily)(需要運行時字節碼的增強)。 lazy="false"指定此關聯總是被預先抓取。注意,如果constrained="false", 不可能使用代理,Hibernate會采取預先抓取!
原帖地址:https://apps.hi.baidu.com/share/detail/38568475
最後更新:2017-04-02 22:16:02