回覆列表
  • 1 # 使用者3494949202203

    到了Hibernate3.0以後,關聯關係的物件預設都是使用延遲載入,例如

    在網上查詢資料,說在為了延遲載入

    仔細閱讀了Hibernate的手冊,才發現原來要延遲載入

    總結一下:

    如果當constrained="true",且lazy="proxy"(預設),是可以延遲載入的.

    如果當constrained="true",且lazy="true"時,需要經過執行期位元組碼增加,延遲載入才會奏效.

    使用hibernate後,觀念應該轉變過來, 一個物件應該是完整, 所以沒法返回一個只包含某幾個屬性(欄位) 的物件。 例如,一個人,就不能只返回一個頭, 還是手什麼的

    如果資料量過大, 當然還是有這個必要. 也可以做到, 但是返回的不會是物件,而是欄位陣列.

    hibernate 管這叫投影 Criteria criteria=session.createCriteria(User.class);

    ProjectionList proList = Projections.projectionList();//設定投影集合 proList.add(Projections.groupProperty("userName")); proList.add(Projections.groupProperty("password")); criteria.setProjection(proList);

    最後返回的List是 Object[] , [0] = userName, [1] = password 如果你真的只用來查 userName,password, 那就小題大做了 我想直接取出view(String userName,String password)的形式,

    即hql:select new view(userName,password) from ....

    兩種方法 1 屬性的延遲載入

    在hbm.xml的屬性上加 lazy=true

    2 輕量設計

    單獨設計一個類, 只包含 userName 和password

    我的意思就是設計了一個類用來存放username和password,但是Criteria能返回這個bean型別的一個List嗎?

    再寫一個xml啊, 沒人規定一張表只能對映一次

    輕量的employee對映

  • 中秋節和大豐收的關聯?
  • 寫毛筆字時,有什麼辦法可以讓宣紙不洇?