文章出處

Hibernate表中的1+N的問題:1、所謂1+N的問題,意思是說我們希望查詢一張表里面的數據,但是在執行sql語句時,會發生多條和另外對應表的sql語句。這樣會降低數據庫執行效率和性能。

2.解決1+N的問題的三種方式如下:

//使用session.creatQuery的方式,在對應的類中設置@ManyToOne(fetch=FetchType.LAZY) @Testpublic void testSelect1Topic() {Session session = sf.openSession();session.beginTransaction(); //List t =(List) session.createCriteria(Topic.class).list(); //List t =(List) session.createQuery("from Topic").list();     for (Topic to : t) {     System.out.println(to.getId() + "-" + to.getTitle());} session.getTransaction().commit();session.close();} //在對應的類中設置@BatchSize中size的屬性的值  @Test public void testSelect2Topic() { Session session = sf.openSession(); session.beginTransaction();  //List t =(List) session.createCriteria(Topic.class).list();  // List t =(List) session.createQuery("from Topic").list();       for (Topic to : t) {      System.out.println(to.getId() + "-" + to.getTitle());  }  session.getTransaction().commit(); session.close();  } //使用join fetch  @Testpublic void testSelect3Topic() {Session session = sf.openSession();session.beginTransaction(); //List  t =(List) session.createCriteria(Topic.class).list(); List t =(List) session.createQuery("from Topic t left join fetch t.category c").list();    for (Topic to : t) {     System.out.println(to.getId() + "-" + to.getTitle());} session.getTransaction().commit();session.close();}

看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20170204/97764.html

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()