<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qqjianyue代碼工

    砌java代碼
    posts - 62, comments - 9, trackbacks - 0, articles - 10
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    hibernate簡單入門介紹

    Posted on 2008-10-01 09:49 Qzi 閱讀(344) 評論(0)  編輯  收藏 所屬分類: ssh1.2_2.0_3.1

    一.繼承關(guān)系和關(guān)聯(lián)聚集關(guān)系映射
    1.整個類層次使用一張表
    2.每個葉結(jié)點使用一張表,該表保存了該類自己的和所繼承的所有屬性
    3.每個類使用一張表,該表只保存OID以及對應(yīng)類自己的屬性(不含所繼承的屬性)

    1.“1對1”或“1對多”關(guān)系的映射,簡單地利用外鍵即可
    2.“多對多”關(guān)系的映射,引入一個新的表,專門記錄這種“多對多”關(guān)系

    二.編程步驟:事前準備包括建立一個project并且加入外部庫
    新建一個Project HibernateSample,然后在Project上點右鍵,選擇Properties ? Java Build Path ? Libraries。選擇Add External JARs,然后將Hibernate目錄下的hibernate3.jar,以及Hibernate目錄下的lib文件夾中所有的jar文件添加進來。
    另外我們還必須有MySQL的JDBC驅(qū)動,用上面的辦法同樣把mysql-connector-java-3.1.12-bin.jar添加進我們的Build Path中。

    1.創(chuàng)建數(shù)據(jù)庫(例如User表)
    2.建立對應(yīng)數(shù)據(jù)庫的類的屬性與操作(例如User類)
    3.編寫映射數(shù)據(jù)庫表hibernate mapping,命名為***.hbm.xml(例如User.hbm.xml)
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
     <class name="sample.User" table="user">
      <id name="id" column="id" type="java.lang.Integer">
       <generator class="native" />
      </id>
      <property name="name" column="name" type="java.lang.String" />
      <property name="age" column="age" type="java.lang.Integer" />
     </class>
    </hibernate-mapping>
    明顯可見關(guān)注點包括
    A)class中包中的類與數(shù)據(jù)庫中table的對應(yīng)
    B)property中 類中ID和屬性與table中字段的對應(yīng)

    4.編寫Hibernate配置文件hibernate configurarion file,通常命名:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
     <session-factory>
      <!-- 是否顯示實際操作數(shù)據(jù)庫時的SQL -->
      <property name="show_sql">true</property>
      <!-- SQL方言,這邊設(shè)定的是MySQL -->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      <!-- JDBC驅(qū)動程序 -->
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <!-- JDBC URL -->
      <property name="connection.url">jdbc:mysql://localhost/Sample</property>
      <!-- 數(shù)據(jù)庫用戶名 -->
      <property name="connection.username">root</property>
      <!-- 數(shù)據(jù)庫密碼 -->
      <property name="connection.password">123456</property>
      <!-- 以下設(shè)置對象與數(shù)據(jù)庫表格映像文件 -->
      <mapping resource="sample/User.hbm.xml"/>
     </session-factory>
    </hibernate-configuration>
    關(guān)注點包括:
    A)數(shù)據(jù)庫路徑, 數(shù)據(jù)庫用戶名, 數(shù)據(jù)庫密碼,
    B)還有就是指定數(shù)據(jù)庫映射文件mapping resource

    5.配置log4j.properties
    在src目錄下點右鍵,選擇import,然后選擇General ? File System,接著選擇Hibernate文件夾下的etc文件夾,再選擇log4j.properties文件,最后選擇Finish。
    關(guān)鍵配置文件:
    hbm是映射配置
    cfg是密碼,用戶,以及hbm指定配置
    properties是用于配置當前數(shù)據(jù)庫連接的屬性配置

    6.編程操作數(shù)據(jù)庫過程
    使用對象增加數(shù)據(jù)項:
    A)Configuration配置Configuration config = new Configuration().configure();
    B)Session工廠獲得SessionFactory sessionFactory = config.buildSessionFactory();
    C)Session獲得Session session = sessionFactory.openSession();
    D)Transaction事務(wù)啟動Transaction tx = session.beginTransaction();
    E)建立映射數(shù)據(jù)的實體類(例如User的一個實例)
    F)session操作(例如session.save(user)插入到數(shù)據(jù)庫一個user的對象)
    G)關(guān)鍵的Transaction事務(wù)提交,tx.commit();
    H)清理包括Transaction對象,session對象,sessionFactory對象的有順序清理

    使用Criteria查詢數(shù)據(jù)
    A)配置Configuration,SessionFactory,Session與上面相同
    B)創(chuàng)建Criteria criteria=session.createCriteria(User.class);
    C)創(chuàng)建User列表List users = criteria.list();
    D)使用迭代器Iterator iterator = users.iterator();
    E)iterator.hasNext(),iterator.next()的使用
    F)criteria.add(Expression.eq("name","hibernateUser2"));加上查詢約束
    G)users = criteria.list();將會按照查詢約束得到列表.

    使用鼓勵的HQL的Query查詢
    A)創(chuàng)建Query例如Query query = session.createQuery("from User");
    B)獲得數(shù)據(jù)List uers = query.list();
    C)遍歷器使用Iterator iterator = users.iterator();又如iterator.hasNext();和iterator.next();
    D)使用過濾查詢
    query = session.createQuery("from User user where user.name like ?");
    query.setParameter(0, "hibernateUser2");Query的setParameter()方法第一個參數(shù)是指定 ? 出現(xiàn)的位置,從 0 開始,第二個參數(shù)則是設(shè)定查詢條件。
    然后再List uers = query.list();獲得的將是滿足username==hibernateUser2的條件的結(jié)果
    E)清除session和sessionFactory使用close方法.


    hibernate_rar

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: yy6080久久亚洲精品| 在线免费观看一级片| 亚洲精品无码AV人在线播放| 免费人成网站永久| 日韩亚洲国产二区| 一个人晚上在线观看的免费视频| 亚洲国产小视频精品久久久三级 | 中文成人久久久久影院免费观看| 亚洲毛片不卡av在线播放一区| 污污视频免费观看网站| 久久久久亚洲AV无码专区网站| jizz在线免费播放| 亚洲AV永久无码精品一百度影院| 久久免费精品一区二区| 蜜芽亚洲av无码精品色午夜| 国内精品乱码卡1卡2卡3免费| 国产人成亚洲第一网站在线播放| 四虎国产精品免费久久影院| fc2免费人成在线| 97久久精品亚洲中文字幕无码 | 免费一区二区无码视频在线播放| 久久久久国产成人精品亚洲午夜 | 亚洲熟妇AV一区二区三区宅男| 免费看a级黄色片| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲精品韩国美女在线| 亚洲性线免费观看视频成熟| 亚洲熟妇无码一区二区三区导航| 成人免费网站在线观看| 免费夜色污私人影院网站| 亚洲精品tv久久久久久久久| a拍拍男女免费看全片| 亚洲av无码兔费综合| 中文字幕专区在线亚洲| 18禁止看的免费污网站| 无码色偷偷亚洲国内自拍| 久久久久久久尹人综合网亚洲| 在线观看免费人成视频| 特级毛片aaaa级毛片免费| 亚洲精品免费在线观看| 日韩免费高清视频|