張慧的博客

          張慧的博客

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks

          準(zhǔn)備階段:

          Hibernate可用于各種類型的項(xiàng)目,要在項(xiàng)目中使用Hibernate,需要下載Hibernate的API.
          通過(guò)http://www.hibernate.org/網(wǎng)址可以下載到Hibernate的API和一些幫助文檔.

          點(diǎn)擊downloads —> release bundles即可下載

          下載解壓后,在lib -> required目錄下可找到項(xiàng)目中需要的jar包(API).

          官網(wǎng)上好像沒(méi)有API的幫助文檔,大家可以到這里下載:http://115.com/file/bensl2vy#hibernate api幫助文檔.chm

           

          開發(fā)階段:

          新建一個(gè)JAVA項(xiàng)目,目錄結(jié)構(gòu)如下:

          將準(zhǔn)備的jar包引入到項(xiàng)目中。

           

          hibernate.cfg.xml:(Hibernate的配置文件,放在項(xiàng)目的src目錄下):<?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"
          >
           
               <!-- Generated by MyEclipse Hibernate Tools.                   -->
           <hibernate-configuration>
           
               <session-factory>
                   <!-- 設(shè)置驅(qū)動(dòng)類 -->
                   <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
                   <!-- 設(shè)置連接池默認(rèn)個(gè)數(shù) -->
                   <property name="connection.pool_size">20</property>
                   <!-- 設(shè)置JDBC URL -->
                   <property name="connection.url">jdbc:mysql://localhost:3306/book</property>
                   <!-- 設(shè)置數(shù)據(jù)庫(kù)用戶名 -->
                   <property name="connection.username">username</property>
                   <!-- 設(shè)置數(shù)據(jù)庫(kù)用戶密碼 -->
                   <property name="connection.password">passwrod</property>
                   <!-- 設(shè)置SQL方言 -->
                   <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
                   <!-- 設(shè)置是否顯示SQL語(yǔ)句 -->
                   <property name="show_sql">true</property>
                   <!-- 設(shè)置格式化SQL語(yǔ)句 -->
                   <property name="format_sql">true</property>
                   <property name="current_session_context_class">thread</property>
           
                   <mapping resource="com/sunflower/bean/Person.hbm.xml" />
               </session-factory>
           
           </hibernate-configuration>

          這里配置的是MySQL數(shù)據(jù)庫(kù)的驅(qū)動(dòng)和連接,在開始的時(shí)候忘了加26行,結(jié)果調(diào)試的時(shí)候出錯(cuò),得不到session,關(guān)于這個(gè)標(biāo)簽的使用,請(qǐng)參考如下文章:http://blog.sina.com.cn/s/blog_5ecfe46a0100e467.html 第28行是對(duì)象關(guān)系映射文件的配置.

          Person.java:(人的實(shí)體類,對(duì)應(yīng)到關(guān)系數(shù)據(jù)庫(kù)中的blog表)package com.sunflower.bean;

           
           import java.io.Serializable;
           
           /**
            * 博客用戶的實(shí)體類
            * 
            * 
          @author hanyuan
            * @time 2012-7-8 下午11:53:23
            
          */
           public class Person implements Serializable {
               private Integer id;
               private String username;
               private String password;
               private String caption;
               private String content;
           
               public Integer getId() {
                   return id;
               }
           
               public void setId(Integer id) {
                   this.id = id;
               }
           
               public String getUsername() {
                   return username;
               }
           
               public void setUsername(String username) {
                   this.username = username;
               }
           
               public String getPassword() {
                   return password;
               }
           
               public void setPassword(String password) {
                   this.password = password;
               }
           
               public String getCaption() {
                   return caption;
               }
           
               public void setCaption(String caption) {
                   this.caption = caption;
               }
           
               public String getContent() {
                   return content;
               }
           
               public void setContent(String content) {
                   this.content = content;
               }
           
           }

           第12~16行中的屬性對(duì)應(yīng)到數(shù)據(jù)庫(kù)中的blog表的字段,其中id是主鍵索引.

          Person.hbm.xml:(對(duì)象關(guān)系映射配置文件)<?xml version="1.0"?>

           <!DOCTYPE hibernate-mapping PUBLIC 
               "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
               "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"
          >
           
           <hibernate-mapping>
               <!-- 設(shè)置實(shí)體類與數(shù)據(jù)庫(kù)中表的對(duì)應(yīng)關(guān)系 -->
               <class name="com.sunflower.bean.Person" table="blog">
           
                   <id name="id" type="java.lang.Integer">
                       <column name="id"></column>
                       <!-- 將逐漸設(shè)置為自增 -->
                       <generator class="increment"></generator>
                   </id>
           
                   <property name="username" type="java.lang.String" not-null="true">
                       <column name="username"></column>
                   </property>
           
                   <property name="password" type="java.lang.String">
                       <column name="password"></column>
                   </property>
           
                   <property name="caption" type="java.lang.String">
                       <column name="caption"></column>
                   </property>
           
                   <property name="content" type="java.lang.String">
                       <column name="content"></column>
                   </property>
           
               </class>
           </hibernate-mapping>

          <class name="com.sunflower.bean.Person" table="blog">表示對(duì)象對(duì)應(yīng)的表,<id>字段是必須要有的,表示主鍵。開始的時(shí)候沒(méi)有加第13行,結(jié)果調(diào)試出錯(cuò),需要加上<generator>標(biāo)簽,這里設(shè)置為自增類型.關(guān)于<generator>標(biāo)簽的使用,參考下列文章:http://sarin.iteye.com/blog/605712

          這個(gè)配置文件的是以hbm.xml結(jié)尾的,名字建議命名為對(duì)象名.hbm.xml,并且和實(shí)體類對(duì)象放在同一個(gè)包下,這樣比較好找.

          Test.java:(調(diào)用Hibernate API 插入數(shù)據(jù))package com.sunflower.main;

           
           import org.hibernate.Session;
           import org.hibernate.SessionFactory;
           import org.hibernate.Transaction;
           import org.hibernate.cfg.Configuration;
           
           import com.sunflower.bean.Person;
           
           public class Test {
               @SuppressWarnings("deprecation")
               public static void main(String[] args) {
                   // 讀取Hibernate的配置信息
                   Configuration config = new Configuration();
                   config.configure();
           
                   // 讀取配置里面的SessionFactory
                   SessionFactory sessionFactory = config.buildSessionFactory();
                   Session session = sessionFactory.getCurrentSession();
                   Transaction transaction = session.beginTransaction();
           
                   Person person = new Person();
                   person.setUsername("鄧光橋");
                   person.setPassword("123");
                   person.setCaption("Hibernate");
                   person.setContent("Hibernate 入門實(shí)例");
           
                   // 提交事務(wù)
                   session.save(person);
                   transaction.commit();
                   sessionFactory.close();
               }
           }

           

           

          posted on 2012-07-10 00:46 張慧 閱讀(1110) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 太白县| 伊川县| 年辖:市辖区| 砀山县| 宁陵县| 辽阳市| 平定县| 黔西县| 伊金霍洛旗| SHOW| 滁州市| 英吉沙县| 莱芜市| 阿瓦提县| 嘉兴市| 三亚市| 甘孜县| 涞水县| 许昌市| 莱州市| 临邑县| 怀远县| 滁州市| 义乌市| 方正县| 武乡县| 彝良县| 思南县| 成武县| 颍上县| 华池县| 正安县| 合肥市| 康马县| 辉县市| 家居| 沈丘县| 苗栗县| 蒙城县| 临颍县| 雅江县|