亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java學習之hibernate配置要點詳談

2019-11-18 12:57:29
字體:
來源:轉載
供稿:網友

  1.兩種配置文件:
  A.hibernate.cfg.xml和B.hibernate.PRoperties
  
  A中可含映射文件的配置,而B中hard codes加映射文件。
  
  A.Configuration config=new Configuration().config();
  B. Configuration config=new Configuration();
  config.addClass(TUser.class);
  
  2.你不必一定用hibernate.cfg.xml或hibernate.properties這兩文件名,你也不一定非得把配置文件放在Classes下,  File file=new File("c://sample//myhibernate.xml");  Configuration config=new Configuration().config(file);
  
  3. session.Flush() 強制數據庫立即同步,當用事務時,不必用flush,事務提交自動調用flush在session關閉時也會調用flush
  
  4. Hibernate總是使用對象類型作為字段類型
  
  5. XDoclet專門建立了hibernate doclet,就是在java代碼上加上一些java docTag,后來再讓XDoclet分析該java代碼,生成映射文件;
  
  6.HQL子句本身大小寫無關,但是其中出現的類名和屬性名必須注重大小寫區分。
  
  7.關系:  Constrained : 約束,表明主控表的主鍵上是否存在一個外鍵(foreigh key)對其進行約束。
  
  property-ref:關聯類中用于與主控類相關聯的屬性名,默認為關聯類的主鍵屬性名
  
  單向一對多需在一方配置,雙向一對多需在雙方進行配置
  
  8.lazy=false:被動方的記錄由hibernate負責記取,之后存放在主控方指定的Collection類型屬性中
  
  9. java.util.Set或net.sof.hibernate.collecton.Bag類型的Collection
  
  10.重要:inverse:用于標識雙向關聯中的被動方一端。
  
  inverse=false的一方(主控方)負責維護關聯關系.默認值:false
  
  11.batch-size:采用延遲加載特征時,一次讀入的數據數昨。
  
  12.一對多通過主控方更新(主控方為一方時)
  
  user.getAddresses().add(addr);
  
  session.save(user);//通過主控對象級聯更新
  
  13.在one-to-many 關系中,將many 一方設為主動方(inverse=false)將有助性能的改善。在一方設置關系時,inverse=true,即將主控權交給多方,  這樣多方可主動從一方獲得foreign key,然后一次insert即可完工。
  
  addr.setUser(user);//設置關聯的TUser對象
  
  user.getAddresses().add(addr);
  
  session.save(user);//級聯更新
  
  14.只有設為主控方的一方才關心(訪問)對方的屬性,被動方是不關心對方的屬性的。
  
  15.one-to-many與many-to-one節點的配置屬性不同:
  
  一對多關系多了lazy和inverse兩個屬性多對多節點屬性:
  
  column:中間映射表中,關聯目標表的關聯字段
  
  class:類名,關聯目標類
  
  outer-join:是否使用外聯接
  
  注重:access是設置屬性值的讀取方式。
  
  column是設置關聯字段。
  
  16.多對多,注重兩方都要設置inverse和lazy,cascade只能設為insert-update
  
  多對多關系中,由于關聯關系是兩張表相互引用,因此在保存關系狀態時必須對雙方同時保存。
  
  group1.getRoles().add(role1);  role1.getGroups().add(group1);
  
  session.save(role1);  session.save(group1);
  
  17.關于vo和po  vo經過hibernate容量處理,就變成了po(該vo的引用將被容器保存,并且在session關閉時flush,因此po假如再傳到其它地方改變了,就危險了)    vo和po相互轉換:BeanUtils.copyProperties(anotherUser,user);
  
  18.對于save操作而言,假如對象已經與Session相關聯(即已經被加入Session的實體容器中),則無需進行具體的操作。因為之后的Session.flush過程中,Hibernate 會對此實體容器中的對象進行遍歷,查找出發生變化的實體,生成并執行相應的update 語句。
  
  19.假如我們采用了延遲加載機制,但希望在一些情況下,實現非延遲加 載時的功能,也就是說,我們希望在Session關閉后,依然答應操作user的addresses 屬性 Hibernate.initialize方法可以通過強制加載關聯對象實現這一功能: 這也正是我們為什么在編寫POJO時,必須用JDK Collection接口(如Set,Map), 而非特定的JDK Collection實現類(如HashSet、HashMap)申明Collection屬性的 原因。
  
  20.事務:從sessionFactory獲得session,其自動提交屬性就已經關閉(AutoCommit=false),此時若執行了jdbc操作,假如不顯式調用session.BeginTransaction(),是不會執行事務操作的。
  
  jdbc transaction:基于同一個session(就是同一個connection)的事務;
  
  jta transaction:跨session(跨connection)事務.
  
  對于jta事務,有三種實現方法:
  
  A。UserTransaction tx=new InitialContext().lookup("...");
  tx.commit();
  
  B. 使用hibernate封裝的方法:(不推薦)
  
  Transaction tx=session.beginTransaction();
  tx.commit();
  C. 使用ejb之sessionBean的事務技持方法,你只要在把需要在發布描述符中,把需要jta事務的方法聲明為require即可
  
  21.悲觀鎖,樂觀鎖:  樂觀鎖一般通過version來實現,注重version節點必須出現在id后。
  
  22.Hibernate中,可以通過Criteria.setFirstResult和Criteria.setFetchSize方法設定分頁范圍。
  
  Query接口中也提供了與其一致的方法,hibernate主要在dialect類中實現在這個功能。
  
  23.cache
  
   ……
  
  net.sf.ehcache.hibernate.Provider 

  
  還需對ecache本身進配置
  
   

  
  之后在映射文件中指定各個映射實體的cache策略
  
  
  ....
  
  
  ....
  

  
  ***************************************************** Query.list()跟Query.iterate()的不同: 對于query.list()總是通過一條sql語句獲取所有記錄,然后將其讀出,填入pojo返回; 但是query.iterate(),則是首先通過一條Select SQL 獲取所有符合查詢條件的記錄的 id,再對這個id 集合進行循環操作,通過單獨的Select SQL 取出每個id 所對應的記 錄,之后填入POJO中返回。
  
  也就是說,對于list 操作,需要一條SQL 完成。而對于iterate 操作,需要n+1 條SQL。,list方法將不會從Cache中讀取數據。iterator卻會。
  
  24.ThreadLocal:它會為每個線程維護一個私有的變量空間。實際上, 其實現原理是在JVM 中維護一個Map,這個Map的key 就是當前的線程對象,而value則是 線程通過ThreadLocal.set方法保存的對象實例。當線程調用ThreadLocal.get方法時, ThreadLocal會根據當前線程對象的引用,取出Map中對應的對象返回。
  
  這樣,ThreadLocal通過以各個線程對象的引用作為區分,從而將不同線程的變量隔離開來。
  
  25.Hibernate官方開發手冊標準示例:
  
  public class HibernateUtil { private static SessionFactory sessionFactory;
  static { try { // Create the SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
  } catch (HibernateException ex) { throw new RuntimeException( "Configuration problem: " + ex.getMessage(), ex );
  } } public static final ThreadLocal session = new ThreadLocal();
  public static Session currentSession() throws HibernateException { Session s = (Session) session.get();
  // Open a new Session, if this Thread has none yet if (s == null) { s = sessionFactory.openSession();
  session.set(s);
  } return s;
  } public static void closeSession() throws HibernateException { Session s = (Session) session.get();
  session.set(null);
  if (s != null) s.close();
  } }
  
  26.通過filter實現session的重用:
  
  public class PersistenceFilter implements Filter { protected static ThreadLocal hibernateHolder = new ThreadLocal();
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { hibernateHolder.set(getSession());
  try { …… chain.doFilter(request, response);
  …… } finally { Session sess = (Session)hibernateHolder.get();
  if (sess != null) { hibernateHolder.set(null);
  try { sess.close(); } catch (HibernateException ex) { throw new ServletException(ex);
  } } } } ……}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线观看一区二区三区| 国产成人一区二区在线| 91精品国产综合久久香蕉922| 26uuu亚洲国产精品| 亚洲аv电影天堂网| 欧美巨大黑人极品精男| 少妇高潮久久久久久潘金莲| 中文字幕亚洲欧美日韩2019| 国产日产久久高清欧美一区| 日韩欧美在线看| 亚洲天堂精品在线| 亚洲理论电影网| 日韩精品在线免费观看视频| 一区二区福利视频| 欧美午夜美女看片| 色综合男人天堂| 国产精品久久久久高潮| 中文字幕亚洲欧美在线| 日韩欧美成人免费视频| 一区三区二区视频| 欧美国产日韩一区二区| 少妇激情综合网| 国产精品久久久久久久一区探花| 久久久久久久久久久国产| 精品高清美女精品国产区| 国产成人精品亚洲精品| 日产精品久久久一区二区福利| 91精品综合视频| 久久九九全国免费精品观看| 另类少妇人与禽zozz0性伦| 久久青草精品视频免费观看| 欧美成aaa人片在线观看蜜臀| 久青草国产97香蕉在线视频| 国产亚洲精品激情久久| 中文字幕久热精品在线视频| 亚洲第一视频在线观看| 538国产精品一区二区免费视频| 久久精品久久久久电影| 日韩视频免费中文字幕| 91精品啪aⅴ在线观看国产| 亚洲精品一区二区网址| 国内精品久久久久久久| 亲爱的老师9免费观看全集电视剧| 久久久久久久成人| 久热精品视频在线观看一区| 欧美成人精品在线| 亚洲美女动态图120秒| 精品中文字幕久久久久久| 日韩精品一二三四区| 亚洲一区二区三区在线免费观看| 色播久久人人爽人人爽人人片视av| 97免费视频在线播放| 懂色av影视一区二区三区| 欧美精品久久久久久久久久| 人人澡人人澡人人看欧美| 欧美午夜www高清视频| 亚洲精品动漫久久久久| 欧美劲爆第一页| 国产亚洲欧美视频| 亚洲欧美在线一区二区| 国内揄拍国内精品少妇国语| 91在线|亚洲| 色av吧综合网| 久久精品免费电影| 久久精品国产视频| 在线观看不卡av| 国产男女猛烈无遮挡91| 久久久999精品免费| 在线午夜精品自拍| 亚州精品天堂中文字幕| 韩国精品久久久999| 777午夜精品福利在线观看| 国产91露脸中文字幕在线| 久久视频精品在线| 精品久久久久久久久久ntr影视| 欧美一级成年大片在线观看| 成人网在线免费看| 日韩一级裸体免费视频| 亚洲欧美日韩国产成人| 久久久97精品| 精品伊人久久97| 亚洲欧美日韩成人| 国产成人福利视频| 亚洲三级黄色在线观看| 日韩精品在线私人| 久久夜色精品国产欧美乱| 亚洲成人性视频| 久久成人这里只有精品| 色青青草原桃花久久综合| 久久国产精品久久久久| 国产精品aaaa| 1769国产精品| 日韩a**站在线观看| 国产精品亚洲精品| 日韩精品福利在线| 日韩欧美国产视频| 欧美日韩中文字幕| 黑人极品videos精品欧美裸| 国产日韩精品在线播放| 久久久久久久91| 国产aⅴ夜夜欢一区二区三区| 久久五月天色综合| 久久久久久美女| 国产精品视频在线播放| 午夜精品一区二区三区av| 久久综合伊人77777蜜臀| 欧美大片在线影院| 青青草原一区二区| 奇米一区二区三区四区久久| 亚洲天堂av在线播放| 亚洲大胆美女视频| 91精品国产高清久久久久久久久| 国产精品欧美久久久| 91精品久久久久久综合乱菊| 国产成人精品国内自产拍免费看| 色综合久综合久久综合久鬼88| 欧美亚洲一区在线| 2019中文字幕免费视频| 成人av资源在线播放| 日韩黄色av网站| 超碰97人人做人人爱少妇| 日韩亚洲成人av在线| 国产999精品| 欧美日韩另类字幕中文| 38少妇精品导航| 欧美亚洲国产视频小说| 亚洲欧美中文在线视频| 综合激情国产一区| 欧美性生交xxxxxdddd| 日韩精品日韩在线观看| 国产不卡一区二区在线播放| 韩国美女主播一区| 法国裸体一区二区| 亚洲一区二区三区毛片| 92国产精品视频| 午夜精品国产精品大乳美女| 国产日韩欧美一二三区| 亚洲欧美日韩国产中文| 麻豆精品精华液| 亚洲欧美日韩一区二区三区在线| 国产精品视频xxx| 亚洲综合自拍一区| 日韩一区二区精品视频| 一区二区三区www| 欧美成人国产va精品日本一级| 欧美日韩一区二区三区在线免费观看| 国产精品日韩av| 丝袜美腿亚洲一区二区| 成人免费视频网址| 亚洲欧美日韩中文在线| 欧美日韩高清在线观看| 国产美女久久久| 久久91精品国产| 亚洲国产精品高清久久久| 国产精品中文久久久久久久| 欧美性生交大片免网| 日韩av高清不卡| 久久这里有精品视频| 97精品在线观看| 91中文字幕在线| 日日噜噜噜夜夜爽亚洲精品| 国产视频精品xxxx| 伊是香蕉大人久久| 日韩在线观看免费高清完整版|