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

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

學習HibernateinAction讀書筆記

2019-11-18 15:48:14
字體:
來源:轉載
供稿:網友

  讓我們還是以這個經久不衰的例子"Hello World"開始:)
  
  1.Message.java: 一個簡單的持久類
  package hello;
  
  public class Message {
  
  PRivate Long id;  //說明
  
  private String text;
  
   private Message nextMessage;
  
   private Message() {}
  
  public Message(String text) {
  
  this.text = text;
  
  }
  
  public Long getId() {
  
  return id;
  
  }
  
  private void setId(Long id) {
  
  this.id = id;
  
  }
  
  public String getText() {
  
  return text;
  
  }
  
  public void setText(String text) {
  
  this.text = text;
  
  }
  
  public Message getNextMessage() {
  
  return nextMessage;
  
  }
  
  public void setNextMessage(Message nextMessage) {
  
  this.nextMessage = nextMessage;
  
  }
  
  }
  
  說明: ID標識符 (identifier) ,它答應應用去訪問數據庫以一個唯一的標識,這個標識也就是持久類的主鍵值。假如一個Message對象有兩個實例,它們擁有同一個標識,那么代表他們訪問的是數據庫的同一個數據。在這里我們選擇了Long做這個標識的數據類型,但是這不是必須的。因為Hibernate答應這個identifier為任何的數據類型。
  
  2. 保存數據信息到數據庫:
  session session = getSessionFactory().openSession();
  
  Transaction tx = session.beginTransaction();
  
  Message message = new Message("Hello World");
  
  session.save(message);
  
  tx.commit();
  
  session.close();
  
  在這段代碼中,我們引用了Hibernate的Session和Transaction接口。這段代碼的執行,就似乎我們做了下面這段SQL所做的事:
  
  insert into MESSAGES (MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID)
  
  values (1, 'Hello World', null)
  
  注:這個例子中,我們假設數據中已經存在MESSAGES這張表了。
  
  3.從數據庫中讀出信息并打印它們
  Session newSession = getSessionFactory().openSession();
  
  Transaction newTransaction = newSession.beginTransaction();
  
  List messages =
  
  newSession.find("from Message as m order by m.text asc");
  
  System.out.println( messages.size() + " message(s) found:" );
  
  for ( Iterator iter = messages.iterator(); iter.hasNext(); ) {
  
  Message message = (Message) iter.next();
  
  System.out.println( message.getText() );
  
  }
  
  newTransaction.commit();
  
  newSession.close();
  
  這段代碼中,大家看到了“from Message as m order by m.text asc”,這是Hibernate自帶的面向對象查詢語言Hibernate Query Language (HQL).那么翻譯一下這句話,就是下面這個SQL了:
  
  select m.MESSAGE_ID, m.MESSAGE_TEXT, m.NEXT_MESSAGE_ID
  
  from MESSAGES m
  
  order by m.MESSAGE_TEXT asc
  
  輸出結果:
  
  1 message(s) found:
  
  Hello World
  
  4.簡單的xml映射文件
  "-//Hibernate/Hibernate Mapping DTD//EN"
  
  "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
  
  name="hello.Message"
  
  table="MESSAGES">
  
  
  name="id"
  
  column="MESSAGE_ID">
  
  name="text"
  
  column="MESSAGE_TEXT"/>
  
  name="nextMessage"
  
  cascade="all"
  
  column="NEXT_MESSAGE_ID"/>
  
  這個映射文件告訴Hibernate,Message這個類是持久化的MESSAGES這張數據庫表,identifier屬性對應的是表中的MESSAGE_ID字段,text屬性對應的是MESSAGE_TEXT字段,nextMessage是一個多對一的關聯,對應的是NEXT_MESSAGE_ID字段。
  
  上面這個文件可以手工編寫,也可以借助第三方工具生成。
  
  5.更新一條信息
  下面讓我們修改一下剛才存到數據庫里面的第一條信息。
  
  Session session = getSessionFactory().openSession();
  
  Transaction tx = session.beginTransaction();
  
  // 1 is the generated id of the first message
  
  Message message =
  
  (Message) session.load( Message.class, new Long(1) );
  
  message.setText("Greetings Earthling");
  
  Message nextMessage = new Message("Take me to your leader (please)");
  
  message.setNextMessage( nextMessage );
  
  tx.commit();
  
  session.close();
  
  這段代碼等同以下三個SQL語句所要實現的東西:
  
  select m.MESSAGE_ID, m.MESSAGE_TEXT, m.NEXT_MESSAGE_ID
  
  from MESSAGES m
  
  where m.MESSAGE_ID = 1
  
  insert into MESSAGES (MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID)
  
  values (2, 'Take me to your leader (please)', null)
  
  update MESSAGES
  
  set MESSAGE_TEXT = 'Greetings Earthling', NEXT_MESSAGE_ID = 2
  
  where MESSAGE_ID = 1
  
  再次運行“Hello World”,輸入信息如下:
  
  2 message(s) found:
  
  Greetings Earthling
  
  Take me to your leader (please)
  
  *補充,在Hibernate中最核心的五個接口:
  
  Session接口:這是Hibernate中一個主要的接口,Session接口的建立和消毀都是輕量級并且耗費資源很少的。這一點很重要,因為在我們的應用,我們每時每刻都在做著Session的create和distroy工作。它不是線程安全的,原則上它應該設計成一個時間只有一個Session才對。Session可以加載一個與一個工作流相關的對象,它可以監測著這個對象的變化,它被稱之為持久對象的治理器,當我們要對數據對象進行編輯操作時,就要調用它了。
  
  SessionFactory接口:我們請求一個Session實例,就是從SessionFactory中取得了。當然SessionFactory就不是個輕量級的東西了,它被多個應用的線程所共享。假如你通過Hibernate訪問多個數據庫,就要為每一個數據庫建立一個SessionFactory。在Hibernate的運行時,SessionFactory緩存了SQL段和其它的中介映射數據。它也保持one unit of work正在讀取的數據和將來可能被用到的數據。
  
  Configuration接口:Configuration用于指定一個應用所使用的映射文件的地址和Hibernate指定的屬性文件,然后建立一個SessionFactory。
  
  Transaction接口:
  
  Query and Criteria接口:進入討論組討論。

上一篇:J2EE表現層設計思考

下一篇:StrutsVSTurbine

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人福利夜色影视| 色无极亚洲影院| 国产亚洲精品久久久久久777| 九九热这里只有精品免费看| 国模精品视频一区二区三区| 欧美性生交xxxxx久久久| 欧美成人亚洲成人日韩成人| 欧美国产亚洲精品久久久8v| 亚洲国产精品大全| 国产欧美精品一区二区三区-老狼| 国产精品久久久久一区二区| 日韩欧美亚洲范冰冰与中字| 欧美日韩国产激情| 日韩精品极品在线观看播放免费视频| 久久久久久久久久久91| 国产精品高清免费在线观看| 国产精品va在线播放我和闺蜜| 国产精品美女在线观看| 国产亚洲精品久久久久动| 欧美日韩国产一区二区三区| 91精品国产99久久久久久| 国产精品黄页免费高清在线观看| 国模精品视频一区二区三区| 欧美自拍视频在线观看| 国产精品久久久久久av福利软件| 亚洲a区在线视频| 亚洲第一福利网| 狠狠躁18三区二区一区| 欧美激情欧美激情在线五月| 国产成人啪精品视频免费网| 成人亚洲综合色就1024| 伊人亚洲福利一区二区三区| 日韩中文在线视频| 亚洲国产精品va在线看黑人| 国产精品爱啪在线线免费观看| 久久综合色影院| 国外成人在线视频| 欧美在线视频在线播放完整版免费观看| 18久久久久久| 欧美体内谢she精2性欧美| …久久精品99久久香蕉国产| 亚洲日本中文字幕免费在线不卡| 亚洲色图偷窥自拍| 8090成年在线看片午夜| 高清欧美电影在线| 亚洲aⅴ男人的天堂在线观看| 精品久久在线播放| 亚洲色图17p| 久久免费视频这里只有精品| 久久久久久尹人网香蕉| 91产国在线观看动作片喷水| 久久成人精品视频| 国产精品高潮呻吟久久av无限| 精品亚洲永久免费精品| 精品久久久免费| 国产97色在线|日韩| 国产成人福利网站| 国产精品99久久久久久www| 日韩高清人体午夜| 伊人久久大香线蕉av一区二区| 国产精品劲爆视频| 久久久国产一区二区| 欧美日韩电影在线观看| 最近2019好看的中文字幕免费| 91地址最新发布| 日韩在线国产精品| 日韩高清欧美高清| 中文字幕日韩综合av| 日韩亚洲欧美成人| 亚洲国产精品久久久| 国产精品免费在线免费| 国产精品18久久久久久麻辣| 国产一区二区av| 成人黄色免费在线观看| 久久av在线播放| 日韩av综合网站| 亚洲成色777777在线观看影院| 日本欧美在线视频| xxxxx成人.com| 国产精品私拍pans大尺度在线| 日韩av免费网站| 亚洲欧美日韩一区在线| 久久久成人av| 日韩专区在线播放| 日韩hd视频在线观看| 成人在线视频网站| 亚洲欧美国产日韩中文字幕| 国产精品高潮呻吟久久av黑人| 中文字幕国产亚洲2019| 一区二区av在线| 久久精品在线视频| 成人午夜在线视频一区| 久久国产精品亚洲| 一本大道香蕉久在线播放29| 国产日韩精品一区二区| 亚洲欧美三级伦理| 91性高湖久久久久久久久_久久99| 欧美精品国产精品日韩精品| 亚洲最大中文字幕| 久久激情视频免费观看| 色一区av在线| 亚洲裸体xxxx| 欧美亚洲另类视频| 国内揄拍国内精品| 4p变态网欧美系列| 亚洲美女在线视频| 5252色成人免费视频| 色综合影院在线| 亚州欧美日韩中文视频| 欧美日韩电影在线观看| 久久精品视频在线| 久久久在线免费观看| 亚洲国产婷婷香蕉久久久久久| 久久亚洲精品中文字幕冲田杏梨| 国产精品精品一区二区三区午夜版| 麻豆一区二区在线观看| 一区二区三区国产视频| 国产精品美女久久久久av超清| 国产精品香蕉国产| 欧美激情在线观看| 日韩av毛片网| 国产一区二区三区在线看| 欧美午夜激情在线| 久久久最新网址| 亚洲国产欧美在线成人app| 欧美激情亚洲视频| 色播久久人人爽人人爽人人片视av| 国产97色在线| 中文字幕av一区中文字幕天堂| 91精品91久久久久久| www.日韩欧美| 国产一区二区三区三区在线观看| 91精品国产777在线观看| 2019日本中文字幕| 福利一区福利二区微拍刺激| 国产欧美一区二区三区久久| 久久久av一区| 久久天堂电影网| 久99久在线视频| 日韩av中文字幕在线播放| 欧美另类69精品久久久久9999| 久久久久久成人精品| 国产999在线| 一区二区三区精品99久久| 成人在线视频网站| 午夜精品美女自拍福到在线| 国产精品高潮呻吟视频| 亚洲国产精品嫩草影院久久| 伊人青青综合网站| 欧美一区视频在线| 亚洲精品91美女久久久久久久| 国产不卡在线观看| 成人黄色大片在线免费观看| 国产精品国产亚洲伊人久久| 8050国产精品久久久久久| 亚洲乱码国产乱码精品精天堂| 黄色成人在线播放| 亚洲成人黄色网址| 欧美成人sm免费视频| 日韩在线精品视频| 美女黄色丝袜一区| 精品美女国产在线| 亚洲福利在线观看| 精品视频久久久久久久|