Hibernate應用 安裝配置

 

Hibernate應用

一、引入

1、  模型不匹配(阻抗不匹配)

Java面嚮對象語言,對象模型,其主要概念有:繼承、關聯、多態等;數據庫是關係模型,其主要概念有:表、主鍵、外鍵等。

2、  解決辦法

(1)       使用JDBC手工轉換

(2)       使用ORM(Object Relation Mapping對象關係映射)框架來解決,主流的ORM框架有Hibernate、TopLink、OJB。

Hibernate是JBOSS公司

二、安裝配置

1、  下載地址http://www. Hibernate.org,本教程使用3.2.5。

2、  將下載目錄/hibernate3.jar和/lib下的hibernate運行時必須的包加入classpath中:antlr.jar,cglib.jar,asm.jar,commons-collections.jar,commons-logging.jar,jta.jar,dom4j.jar

3、  配置文件hibernate.cfg.xml和hibernate.properties,XML和properties兩種,這兩個文件的作用一樣,提供一個即可,推薦XML格式,下載目錄/etc下是示例配置文件。

可以在配置文件指定:數據庫的URL、用戶名、密碼、JDBC驅動類、方言等。啓動時Hibernate會在CLASSPATH裏找這個配置文件。

       4、映射文件(hbm.xml,對象模型和關係模型的映射)。在/eg目錄下有完整的hibernate示例。

 

 

映射<class name=”Java中的實體類的類名” table=”表名”>

              <!-java類中的屬性映射成表的字段->

              <id name=”java類中作爲主鍵的那個屬性的名字” column=”表中列名”>

                     <generator class=”native”/>

</id>

<property name=”java類中普通屬性的名字” column=”表中列名”/>      映射普通的JAVA屬性成一列

</class>   將一個JAVA類映射成表

 

配置文件:

驅動、url、用戶名、密碼

方言

 

【1】       創建一個實體類User

【2】       將hibernate所需jar包構建到項目中(MySQL驅動、hibernate3.jar、lib/required/所有的jar文件、lib/jpa/jar文件)

【3】       配置文件(默認名字hibernate.cfg.xml        hibernate.properties              配置的基本信息:驅動、url、用戶名、密碼、方言、自動創建表格、將hibernate工作過程、及映射文件的位置)

<hibernate-configuration>

  <session-factory>

     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

     <property name="hibernate.connection.url">jdbc:mysql:///shopping</property>

     <property name="connection.username">root</property>

     <property name="connection.password">1234</property>

     <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

     <property name="hibernate.hbm2ddl.auto">create</property>

     <mapping resource="com/hbsi/demain/User.hbm.xml"/>

  </session-factory>

</hibernate-configuration>

【4】       映射文件----

User-----User.hbm.xml

<hibernate-mapping

  package="com.hbsi.domain">  ------指定java實體類的包名

 

  <class name="User" table="user">   ----說明實體類怎樣映射成表

     <id name="id" >   ---缺省掉了column=”xx1”屬性

         <generator class="native"/>

     </id>

     <property name="name"/>

     <property name="birthday"/>

  </class>

</hibernate-mapping>

【5】       寫java代碼

Configuration cfg=new Configuration();

       cfg.configure();//完成hibernate的初始化--讀取配置文件

       //SessionFactory對象----相當於DriverManager

       SessionFactory sf=cfg.buildSessionFactory();

      

       //得Session對象

       Session s=sf.openSession();

       Transaction tx=s.beginTransaction();

       User user=new User();

       user.setName("Tom");

       user.setBirthday(new Date());

      

       //將user對象存入到數據庫表中

       s.save(user);

       tx.commit();

    s.close();

可能出現問題:

(1)       驅動找不到

(2)       Unknown entity: 不認識User實體類。原因在配置文件中沒有指明映射文件所在的位置<mapping resource=”com/hbsi/domain/User.hbm.xml”/>

(3)       Table”shopping.user” doesnot exist:表格不存在   

1>在mysql環境下建一個表

create table user(

id int auto_increment;

name varchar(20);

birthday date;);

2>在配置文件增加配置

       <property name=”hbm2ddl.auto”>create </property>

       create-drop:在hibernate初始化時創建表,程序運行結束時表會被刪除

       create:在hibernate初始化時會創建表。在下一次運行時會刪除前一個,創建一個新的

       update:只是根據映射文件去和數據庫中的表對應起來。如果不一致就更新表的結構。

       validate:校驗映射文件和數據庫中的表是不是能夠對應起來,若不能對應,不更新表,會報錯。

(4)       表建好,表格中沒有記錄

Insert  s.save(user)

<property name=”show_sql”>true</property>

事務

Transaction tx=s.beginTransaction();

...

tx.commit();

數據庫引擎:MyISAM不支持事務

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章