qqjianyue代碼工

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

          hibernate簡單入門介紹

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

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

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

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

          1.創建數據庫(例如User表)
          2.建立對應數據庫的類的屬性與操作(例如User類)
          3.編寫映射數據庫表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>
          明顯可見關注點包括
          A)class中包中的類與數據庫中table的對應
          B)property中 類中ID和屬性與table中字段的對應

          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>
            <!-- 是否顯示實際操作數據庫時的SQL -->
            <property name="show_sql">true</property>
            <!-- SQL方言,這邊設定的是MySQL -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <!-- JDBC驅動程序 -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- JDBC URL -->
            <property name="connection.url">jdbc:mysql://localhost/Sample</property>
            <!-- 數據庫用戶名 -->
            <property name="connection.username">root</property>
            <!-- 數據庫密碼 -->
            <property name="connection.password">123456</property>
            <!-- 以下設置對象與數據庫表格映像文件 -->
            <mapping resource="sample/User.hbm.xml"/>
           </session-factory>
          </hibernate-configuration>
          關注點包括:
          A)數據庫路徑, 數據庫用戶名, 數據庫密碼,
          B)還有就是指定數據庫映射文件mapping resource

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

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

          使用Criteria查詢數據
          A)配置Configuration,SessionFactory,Session與上面相同
          B)創建Criteria criteria=session.createCriteria(User.class);
          C)創建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)創建Query例如Query query = session.createQuery("from User");
          B)獲得數據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()方法第一個參數是指定 ? 出現的位置,從 0 開始,第二個參數則是設定查詢條件。
          然后再List uers = query.list();獲得的將是滿足username==hibernateUser2的條件的結果
          E)清除session和sessionFactory使用close方法.


          hibernate_rar

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


          網站導航:
           
          主站蜘蛛池模板: 阜康市| 白水县| 德钦县| 肃宁县| 大安市| 青龙| 庐江县| 时尚| 延吉市| 阿坝县| 丹寨县| 安岳县| 马尔康县| 香格里拉县| 洱源县| 新乡县| 望城县| 开封市| 竹山县| 安仁县| 怀宁县| 乌鲁木齐市| 读书| 名山县| 舒兰市| 收藏| 微山县| 教育| 长汀县| 普定县| 南京市| 梧州市| 塘沽区| 宜城市| 柞水县| 米泉市| 九龙城区| 青冈县| 祁东县| 宣汉县| 台江县|