【SSH】——Hibernate(3)實體對映
阿新 • • 發佈:2019-02-03
實體對映技術作為類與表之間的聯絡紐帶,在ORM實現中起著至關重要的作用,對於我們而言,對映關係更多的體現在配置檔案的維護過程中。
ORM的實現思想就是將關係資料庫中表的資料對映成物件,以物件的形式展現,這樣開發人員就可以把對資料庫的操作轉化為對這些物件的操作。Hibernate正是實現了這種思想,達到了方便開發人員以面向物件的思想來實現對資料庫的操作。
Hibernate在實現ORM功能的時候主要用到的檔案有:對映類(*.Java)、對映檔案(*.hbm.xml)和資料庫配置檔案(*.properties/*.cfg.xml)。
一、對映類(*.java)
它是描述資料庫表的結構,表中的欄位在類中被描述成屬性,將來就可以實現把表中的記錄對映成為該類的物件了。
二、 對映檔案(*.hbm.xml)
它是指定資料庫表和對映類之間的關係,包括對映類和資料庫表的對應關係、表字段和類屬性型別的對應關係以及表字段和類屬性名稱的對應關係等。
在Hibernate中,類表對映主要分為三部分內容
1)表名--類名對映
2)主鍵對映:不同的策略
3)欄位對映
<?xml version="1.0"?> <!-- XML檔案頭 --> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.oa.domain"> <!-- 配置檔案根節點 --> <class name="User" table="itcast_user"> <!-- ①類名錶名對映 --> <id name="id"> <generator class="native"/> <!-- ②Id對映 --> </id> <property name="loginName" /> <!-- ③屬性/欄位對映 --> <property name="password" /> <property name="name" /> <property name="gender" /> <property name="phoneNumber" /> <property name="email" /> <property name="description" /> <!-- department屬性 ,本類與department的多對一關係 --> <many-to-one name="department" class="Department" column="departmentId"></many-to-one> <!-- role屬性,本類與role的多對多關係 --> <set name="roles" table="itcast_user_role" lazy="false"> <key column="userId"></key> <many-to-many class="Role" column="roleId"></many-to-many> </set> </class> </hibernate-mapping>
XML檔案頭中制定了當前XML的DTD,DTD檔案對當前XML文件中的節點進行了定義,在我們載入檔案之前,可以通過指定的DTD對當前XML中的節點進行檢查,確定XML結構和資料型別是否合法。
三、 資料庫配置檔案(*.properties/*.cfg.xml)
它是指定與資料庫連線時需要的連線資訊,比如連線哪種資料庫、登入資料庫的使用者名稱、登入密碼以及連線字串等。當然還可以把對映類的地址對映資訊放在這裡。
資料庫連線配置(JDBC):
1、資料庫介面卡(dialect)
2、資料庫JDBC驅動類
3、資料庫URL
4、資料庫使用者
5、資料庫密碼
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 1,資料庫連線資訊 -->
<property name="dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</property>
<property name="connection.url">jdbc:mysql:///itcastoa0720</property>
<property name="connection.driver_class">com.jdbc.mysql.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<!-- 2,其他配置 -->
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<!-- 3,匯入對映檔案 -->
<mapping resource="cn/itcast/oa/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
總結:Hibernate實體對映中,這三個檔案為主要作用檔案,關於具體的內容會在後續部落格中討論。