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

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

值得關注的持久化技術: hibernate

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

  1.簡述:
  學習一項新的技術要花時間的,它會不會把時間在使用它之后補回來是應該關注的問題:我們可以用要害字:"jdo ejb cmp hibernate"在Google上找一找對他們的評論文章,其中只要使用過hibernate的人都對它很推崇(我也是).
  
  我們的對象模型可以被hibernate很好的利用,下圖中的Persistent Object是簡單的業務實體對象(要被持久化的對象)。通過hibernate被透明的持久化到數據庫中。下面的例子會說明一切。
  
. 值得關注的持久化技術: hibernate(圖一)

  2.一個簡單的例子
  我們開發一個Person類:
  
. 值得關注的持久化技術: hibernate(圖二)

  可以想象數據表是下面的樣子:
  
  表person
  
. 值得關注的持久化技術: hibernate(圖三)

  要通過hibernate實現它要經過以下步驟:
  
  主要是先根據對象模型編寫簡單的業務實體類(簡單的bean規范類,即有get,set方法的類,可以用jac等工具生成),再用xml映射文件描述其映射數據庫的方式(很easy),最后就可以通過很少的hibernate api寫測試類對其進行持久化操作。
  
  2.1 寫Person類(Persistent Object),它和普通的類沒甚末不同,但注重它應該復合bean的規范,為每個屬性提供get,set方法:
  
  h.Person
  //
  // WARNING: this file has been automatically generated by JAC
  // DO NOT MODIFY unless you know what you are doing
  //
  
  package h;
  
  public class Person {
  
  String name;
  
  /**
  Sets the value of field name.
  @param name value of field name
  */
  
  public void setName(String value) {
    this.name=value;
  }
  
  /**
  Gets the value of field name.
  @return value of field name
  */
  
  public String getName() {
    return name;
  }
  
  String address;
  
  /**
  Sets the value of field address.
  @param address value of field address
  */
  
  public void setAddress(String value) {
    this.address=value;
  }
  
  /**
  Gets the value of field address.
  @return value of field address
  */
  
  public String getAddress() {
    return address;
  }
  
  String id;
  
  /**
  Sets the value of field id.
  @param id value of field id
  */
  
  public void setId(String value) {
    this.id=value;
  }
  
  /**
  Gets the value of field id.
  @return value of field id
  */
  
  public String getId() {
    return id;
  }
  }
  2.2 填寫對象-關系映射xml文件,不用擔心它的復雜程度,我們可以抄嘛:和所有o-r 映射工具一樣都要寫這種映射文件。
  
  Person.hbm.xml 建議命名為:"類名"+"hbm.xml" 并且放置在Person類相同包目錄下
  <?xml version="1.0" encoding="GB2312"?>
  <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
  <hibernate-mapping>
  
   <class name="h.Person">
     <!--hibernate為我們生成主鍵id-->
   <id name = "id" unsaved-value = "null">
   <generator class="uuid.hex"/>
   </id>
  
     <!--默認把類的變量映射為相同名字的表列,當然我們可以修改其映射方式-->
   <property name="name"/>
   <property name="address"/>
   </class>
  </hibernate-mapping>
  
  2.3 TestPerson 我們用hibernate api來進行持久化Person
  
  h.TestPerson 
  package h;
  
  import net.sf.hibernate.session;
  import net.sf.hibernate.Transaction;
  import net.sf.hibernate.SessionFactory;
  import net.sf.hibernate.cfg.Configuration;
  import net.sf.hibernate.tool.hbm2ddl.SchemaEXPort;
  
  class TestPerson{
  
   PRivate static SessionFactory sessions;
  
  public static void main(String[] args) throws Exception{    
   //配置環境,分析xml映射文件
   Configuration conf= new Configuration()
   .addClass(Person.class);
    
    //生成并輸出sql到文件(當前目錄)和數據庫
    SchemaExport dbExport=new SchemaExport(conf);
    dbExport.setOutputFile("build//sql.txt");
    dbExport.create(true, true);
  
   sessions = conf.buildSessionFactory();
    //以上都是些固定格式的環境配置
    
    //start......
    Session s = sessions.openSession();
   Transaction t = s.beginTransaction();
     
    //1.用普通使用方式建立對象,填充數據
     Person p1=new Person();
     p1.setName("陳鵬");
     p1.setAddress("西安東郊黃陵");
     
     //2.持久化
     s.save(p1);
   //此時p1已經可以在數據庫中找到
  
     t.commit();
     s.close();
  }
  }
  
  2.4 為了運行當然要配置數據庫:我以MySQL數據庫為例子:(只用勞動1次即可)
  
  hibernate.properties 在hibernate源程序的根目錄可以找到此文件模板,copy到我們的類的根目錄。即:“../h”
  ## MySQL
  ## 前兩行人家都給你填好了,只用填數據庫連接和username,passWord
  hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
  hibernate.connection.driver_class org.gjt.mm.mysql.Driver
  hibernate.connection.url jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK
  hibernate.connection.username root
  hibernate.connection.password
  
  2.5 運行TestPerson類,在mysql中觀察create好的表person和其中的數據
  
  ok!整個過程主要的是前3步:寫bean類(Persistent Object),寫o-r映射文件,寫存取測試類。
  
  3. 復雜關系例子
  我們換一個稍微復雜的例子來看看:
  
. 值得關注的持久化技術: hibernate(圖四)

  可以想象數據表是下面的樣子:
  
  表person
  
. 值得關注的持久化技術: hibernate(圖五)

  表Company
  
. 值得關注的持久化技術: hibernate(圖六)

  3.1 Person(已有),Company類:Persistent Object
  
  h.Company
  package h;
  public class Company {
  String id;
  public void setId(String value) {
    this.id=value;
  }
  public String getId() {
    return id;
  }
  String name;
  public void setName(String value) {
    this.name=value;
  }
  public String getName() {
    return name;
  }
  java.util.List employees=new java.util.Vector();
  public void setEmployees(java.util.List value) {
    this.employees=value;
  }
  public java.util.List getEmployees() {
    return employees;
  }
  public void addEmployee(h.Person value) {
    employees.add(value);
  }
  public void removeEmployee(h.Person value) {
    employees.remove(value);
  }
  public void clearEmployees() {
    employees.clear();
  }
  }
  
  3.2 填寫對象-關系映射xml文件,Person.hbm.xml照舊
  
  Company.hbm.xml 也放到h.Company類相同目錄下
  <?xml version="1.0" encoding="GB2312"?>
  <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
  <hibernate-mapping>
   <class name="h.Company">
     <!--hibernate為我們生成主鍵id-->
   <id name = "id" unsaved-value = "null">
   <generator class="uuid.hex"/>
   </id>
  
    <property name="name"/>
     <!--1:n關系的映射-->
     <list name="employees" cascade="all">
      <key column="company_id"/>
      <index column="posn"/>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产沙发| 久久亚洲精品网站| 国产精品亚洲欧美导航| 国产精品激情av电影在线观看| 成人免费看黄网站| 91精品久久久久久久久青青| 久久亚洲精品中文字幕冲田杏梨| 8090成年在线看片午夜| 91免费人成网站在线观看18| 日韩av电影在线播放| 亚洲国产另类久久精品| 日韩精品有码在线观看| 欧美在线免费视频| 欧美高清视频在线观看| 欧美又大又粗又长| 精品国产欧美一区二区五十路| 亚洲一区二区三区乱码aⅴ| 国产精品久久久av久久久| 欧美日韩精品在线| 欧美性生活大片免费观看网址| 国产一区二区美女视频| 最新亚洲国产精品| 日韩欧美国产网站| 国产一区二区三区三区在线观看| 亚洲一区二区三区成人在线视频精品| 日韩中文字幕精品| 欧美尤物巨大精品爽| 亚洲精品一区二三区不卡| 亚洲精品日产aⅴ| 国产精品永久在线| 精品国产成人在线| 亚洲999一在线观看www| 国产色视频一区| 黄色一区二区三区| 亚洲综合av影视| 日韩在线欧美在线| 中文字幕在线观看亚洲| 国产区亚洲区欧美区| 欧美在线xxx| 亚洲精品欧美极品| 久久久久久久久久久网站| 成人免费看吃奶视频网站| 正在播放亚洲1区| 57pao国产成人免费| 国产欧美精品日韩| 欧美日韩国产精品一区| 亚洲欧美日韩中文在线| 国产欧美日韩中文| 精品国偷自产在线视频| 91在线无精精品一区二区| www.欧美视频| 国产精品久久久久久久9999| 国产精品一二三在线| 日韩在线播放视频| 欧美wwwxxxx| 最近中文字幕mv在线一区二区三区四区| 成人激情综合网| 亚洲精品mp4| 麻豆国产va免费精品高清在线| 日本午夜精品理论片a级appf发布| 日韩成人免费视频| 国产午夜精品视频免费不卡69堂| 久久亚洲精品中文字幕冲田杏梨| 国产成人午夜视频网址| 91日本在线视频| 亚洲国产精品专区久久| 日产精品久久久一区二区福利| 欧美性猛交xxxx乱大交3| 国产成人极品视频| 国产精品入口日韩视频大尺度| 欧美最近摘花xxxx摘花| 亚洲精品久久久久久久久久久久久| 91在线国产电影| 欧美刺激性大交免费视频| 亚洲男人天堂网| 九九久久综合网站| 136fldh精品导航福利| 久久精品久久久久| 亚洲精品狠狠操| 97久久精品视频| 亚洲美腿欧美激情另类| 亚洲精品资源美女情侣酒店| 久久久久亚洲精品成人网小说| 国产精品27p| 亚洲视频视频在线| 欧美日在线观看| 日韩三级成人av网| 中文字幕最新精品| 国产噜噜噜噜噜久久久久久久久| 成人信息集中地欧美| 国产福利视频一区| 久久国产精品偷| 色综合91久久精品中文字幕| 欧美电影免费观看高清完整| 亚洲欧美日韩在线一区| 欧美性猛交丰臀xxxxx网站| 亚洲a级在线观看| 成人网欧美在线视频| 欧美精品久久久久久久久久| 亚洲欧美日韩精品久久奇米色影视| 日本免费在线精品| 国产99在线|中文| 国产精品久久视频| 91黄色8090| 亚洲欧美日韩久久久久久| 亚洲精品综合精品自拍| 日本乱人伦a精品| 亚洲女人被黑人巨大进入| 久久久www成人免费精品| 91精品国产色综合久久不卡98口| 日韩av最新在线| 欧美大片网站在线观看| 国产欧美日韩91| 欧美性极品xxxx娇小| 欧美最猛性xxxx| 欧美国产精品人人做人人爱| 91国内揄拍国内精品对白| 亚洲最大av在线| 亚洲网站在线播放| 欧美视频在线观看 亚洲欧| 亚洲国产精品小视频| 欧美在线播放视频| 97不卡在线视频| 国产精品丝袜久久久久久高清| 97婷婷涩涩精品一区| 亚洲国产91精品在线观看| 日韩av片电影专区| 精品福利在线视频| 亚洲男人的天堂在线播放| 91大神福利视频在线| 中文字幕亚洲欧美日韩2019| 欧美性猛交xxxx偷拍洗澡| 国产91色在线|免| 日韩av电影手机在线| 这里只有精品在线观看| 精品视频久久久久久| 日本aⅴ大伊香蕉精品视频| 国产综合在线看| 在线视频欧美日韩| 日韩av综合网| 亚洲精品第一国产综合精品| 国模吧一区二区三区| 亚洲国产精彩中文乱码av| 欧美中文字幕第一页| 色偷偷偷亚洲综合网另类| 亚洲国产精品电影在线观看| 欧美性色19p| 日韩高清av一区二区三区| 国产精品av在线| 中文字幕免费精品一区| 日韩在线观看成人| 欧美精品久久久久a| 国产日韩欧美中文| 日韩av观看网址| 亚洲精品视频免费在线观看| 97在线视频精品| 久久久久中文字幕| 成人在线免费观看视视频| 日韩高清电影免费观看完整| 亚洲成色www8888| 国产日韩在线亚洲字幕中文| 欧美大尺度电影在线观看| 国产精品成人在线| 91夜夜揉人人捏人人添红杏|