1. 程式人生 > >Hibernate對映配置檔案基本詳細配置

Hibernate對映配置檔案基本詳細配置

■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓↓↓↓ Hibernate框架 —— 對映配置檔案基本詳細配置↓↓↓↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
引入hibernate核心包下的org.hibernate的對映檔案的約束

-->
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- 
根據約束檔案建立根標籤

auto-import 是查詢這個對映類的檔案的時候是按照類路徑進行查詢的

lazy 是設定是否延遲載入,預設是true,設定為false則是立即載入
◆對映的標籤也是可以設定的
-->
<hibernate-mapping auto-import="true" lazy="false">
<!-- 
class 根據一個類進行對映

name 是類的類路徑
table 是需要進行對映的表
-->
<class name="com.hibernate._01configurefile.Student" table="_student"> 
<!-- 
<id>是定義這個表的主鍵對映

name 是類的屬性
column 是表的欄位名

-->
<id name="id" column="id">
<!-- 
genetator 是定義這個id的值是如何建立的

class 是定義主鍵進行建立的方式

方式一;自行維護
assigned 是開發人員給的,
如果開發人員沒有對主鍵進行賦值則自動賦值,
1但是是從0開始,並且是隻會賦值一次。

方式二;底層資料庫維護
identity  針對sql資料庫的
squence   針對orcle資料庫的
native    自適應

方式三;hibernate框架維護
increment 是根據最大的id+1進行計算的
uuid       是底層生成一個uuid的,
    但是必須要是字元型別或者文字型別

◆注;如果主鍵是使用自生成的,
那麼這個主鍵第一個值必須要是這個自動生成的規則,
如;第一個必須是1
  並且有一些是手動設定以及是失效的,只會使用自生成的值


-->
<generator class="identity"></generator>
</id>

<!-- 
property 是定於類的屬性和表字段直接的關係,
如果表的欄位和類的屬性名是一樣的則不需要寫column預設是一樣的

name 是對映類的屬性名
column 是表的對映欄位名
type   則是需要存入資料庫的型別
length 則是可以存入資料庫的大小
因為在<id>中定義了主鍵所以不需要在<property>中再次定義

在hibernate框架中對資料庫的操作有三種資料庫儲存型別,
每一種資料型別都是一一對應的。

java                  hibernate         MySql
java.lang.String      stringstring/text/clob
java.lang.byte        binary             blob
-->
<property name="name"></property>
<property name="age" column="age"></property>
<property name="date" column="date" type="java.util.Date"></property>
 
<!-- ◆◆◆ 在對檔案進行操作的時候建議檢查資料庫的資料型別和存放的大小 ◆◆◆ -->
<!-- 對字元檔案進行操作 -->
<property name="charFile" column="charFile" type="string" length="2000000"></property>
 
<!-- 對位元組檔案進行操作 -->
<property name="bytes" column="butes" type="binary" length="2000000"></property>
 
 
<!-- 集合對映 -->
<!-- 
配置Set對映

name 是進行對映類的Set屬性名
table 是這個對映集合的表名
 -->
 <set name="set" table="s_set">
 <!-- 
 key 是設定這個表與主表的外來鍵關聯鍵
 -->
<key column="s_id"></key>
<!-- 
element 是定義這個表,存放資料的欄位
-->
<element column="address" type="string"></element>
 </set>



<!-- 
list 是設定這個表的List屬性的副表

name 對映類中的list名
table 是這個副表的名
-->
<list name="list" table="l_list">
<!-- 
key 是設定這個表與主表的外來鍵
 
cloumn 是這個外來鍵的欄位名
-->
<key column="s_id"></key>
<!-- 
因為List集合是一個有序的所以需要定義一個list索引值,
因為id如果進行了刪除那麼則會出現斷層
 
 column 是定義這個索引值的欄位名
 -->
<list-index column="list_i"></list-index>
 
<!-- 
element 是設定這副表的存放資料的欄位

column 是欄位名
 -->
 <element column="address_l" type="string"></element>
</list>



<!-- 
map 是定義對映類中的Map集合

name 是對映類的Map集合屬性名
table 是定義這個對映類的表的表名
-->
<map name="map" table="m_map">
<!-- 
key  是定義這個表的與主表的外來鍵

column 是定義這個外來鍵的欄位名
-->
<key column="s_id"></key>

<!-- 
因為map 集合是有一個key的所以則使用map-key標籤

column 是定義這key的欄位名
type 是定義這個欄位的型別,·····必須
-->
<map-key column="map_key" type="string"></map-key>
<!-- 
element 是定義欄位名

column 是定義這個欄位名
-->
<element column="map_value" type="string"></element>
</map>


----------- 物件對映 ---------------

<!-- 
+---------------->    多對一對映;單向
| 設定對一方的配置
|name 當前這個一方位於多方類中屬性名
|class 是這個多方類的類路徑
|column 是這個多方法位於表的外來鍵欄位
|cascade 是設定這個2個表之間的級聯,
|在寫到程式碼的時候可以省略一點,在刪除,
|修改等操作則會自動對映到一方的表也進行這樣的操作。
|可是如果有多個對映到一方表中的某一個數據,那麼則在刪除的時候則要關閉級聯。
|save-update 是儲存和更新
|delete      是刪除
|all         是所有 
結none        關閉,預設
合-->
就<many-to-one name="person" 
是class="com.levi._02m_t_o_single.Person"
雙column="p_id"
向></many-to-one>
|
|
|<!-- 
|配置多方的對映
|cascade 是配置這個2個表之間的外來鍵級聯
|save-update 儲存和修改級聯
|delete 刪除級聯
|all 所有
|none 預設是沒有
|-->
|<!-- 
+------------->    一對多對映;單向
在資料進行儲存的時候出現了2次的update。
因為這個update的出現是因為在insert的時候那個外來鍵是空的,
從而在後面才需要補上去。
 
在一對多的關聯中是由一方進行維護這個關聯關係的,
而這個關聯關係的建立是依靠外來鍵的。
而這個關聯關係是由誰維護則是誰儲存則是由誰維護的,

所以一方會主動的把自己的主鍵的值再次進行更新到外來鍵表的外來鍵欄位中,
由此產生了2個update語句。

但是可以通過設定inverse(反轉)屬性,
用於將這個關聯維護關係,主動的轉換給被的表

inverse 預設是false,不轉讓出去,需要設定為true
 
 ◆預設在一方
 -->
<set name="orders" cascade="all" inverse="true">

<!-- 設定這個一方類位於這個多方表的外來鍵 -->
<key column="c_id"></key>

<!-- 
配置物件對映關係 

class 配置這個多方類的類路徑

-->
<one-to-many class="com.levi._03o_t_m_single.Orders" ></one-to-many>

</set>



<!-- 
+-------------> 多對多對映;雙向
|配置物件對映,table 是中間表的表名 
|cascade 是設定這個關聯
|save-update 儲存/修改
|delete 刪除
|all 所有
|none 關閉級聯,預設
|
|inverse 設定和外來鍵維護控制權給另外的一個對映,
|因為在多對多的對映中會出現同時2個維護
|-->
|<set name="student" table="n_stu_tea" cascade="all" inverse="true">

對<!-- 設定當前這個表的外來鍵 -->
多<key column="t_id"></key>

向<!-- 
|設定這個表的對映
|column 是設定這個class屬性對應的類的外來鍵值
|-->
|<many-to-many class="com.levi._05m_t_m_double.Student" 
|column="s_id"></many-to-many>
|</set>
|
|<!-- 
+------------->   多對多對映;雙向
設定物件對映
name 是屬性名
table 是中間表
-->
<set name="teacher" table="n_stu_tea">

<!-- 設定當前這個表的位於中間表的外來鍵 -->
<key column="s_id"></key>

<!-- 設定關聯表,column是設定這個關聯表的外來鍵 -->
<many-to-many class="com.levi._05m_t_m_double.Teacher"
column="t_id">
</many-to-many>

</set>

<!-- 
+------------->   一對一對映;雙向 —— 主表
|設定對映,因為外來鍵是不在Person表的 
|-->
<one-to-one name="idcard"
|class="com.levi._06o_t_o_double.IdCard" 
|cascade="all"></one-to-one>

|<!--
|   一對一對映;雙向 —— 副表 
+------------>方式一;使用一對多(多對一)雙向;
|必須要設定外來鍵是唯一的,
一這是一個特殊的一對一。


映-->
射<!-- <many-to-one name="person" 
雙    class="com.levi._06o_t_o_double.Person" 
向column="p_id" 
|cascade="all"
|unique="true"></many-to-one>-->
|<!-- 
|   一對一對映;雙向 —— 副表 
|   
+------------>   方式二;主鍵作為外來鍵

-->
<one-to-one name="person"
class="com.levi._06o_t_o_double.Person"
  cascade="all"
     constrained="true">
</one-to-one>  
</class>
</hibernate-mapping>



















































相關推薦

Hibernate對映配置檔案基本詳細配置

■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓↓↓↓ Hibernate框架 —— 對映配置檔案基本詳細配置↓↓↓↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■<?xml ver

flash讀取外部xml配置檔案基本方法

XML,xml是可擴充套件標記語言的縮寫,全稱為Extensible Markup Language,主要研究什麼 是資料和資料的儲存問題。簡單的說就是如果你想通過讀取外部配置來改變程式載入的功能,可以用到它。         1.一個簡單的XML示例

Nginx配置檔案基本介紹

NGINX和NGINX Plus與其他服務類似,因為它們使用以特定格式編寫的基於文字的配置檔案。預設情況下,該檔名為nginx.conf,而NGINX Plus則放在/ etc / nginx目錄中。 (對於開源NGINX,位置取決於用於安裝NGINX和作業系統的軟體包系統。它通常是/ usr /

SSM:spring+springmvc+mybatis框架中的XML配置檔案功能詳細解釋

SSM:spring+springmvc+mybatis框架中的XML配置檔案功能詳細解釋 這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿

Redis配置檔案詳細解讀

         之前在網上查詢過好多關於redis的配置檔案講解,但是上面的文章大多講解都不太詳細,在這裡,我個人總結了一下,如有不對或不全的還請各位大神指導。 # Redis配置檔案樣例 # Note on units: when memory size is nee

generatorConfiguration配置檔案及其詳細解讀

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configura

ibatis學習配置檔案基本概念

1、有下面配置檔案分析相關 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http

Hibernate配置檔案之主配置檔案

Hibernate配置檔案,主配置檔案。 命名:hibernate.cfg.xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

Hibernate配置檔案和核心配置檔案及其API詳解

Hibernate對映配置檔案 對映配置檔名稱和位置沒有固定要求 對映配置檔案中,標籤name屬性值寫實體類相關內容 class標籤name屬性值實體類全路徑 table是你想要建立的資料表名

MySQL-載入配置檔案並通過配置檔案連線資料庫

package demo5; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.S

使用Apollo管理Springboot配置檔案的相關配置

1,引入Maven依賴: <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId>

mybatis學習筆記之——mybatis的XML配置檔案(全域性配置檔案

MyBatis的配置檔案包含了會深深影響MyBatis行為的設定(settings)和屬性(properties)資訊。我們詳細瞭解一下MyBatis的各種標籤的作用以及使用方法。 properties properties:配置,mybatis可以使用properties標籤來引入外部pr

Spring Boot專案中@Value取不到配置檔案中的配置引數值

Spring Boot專案中@Value取不到配置檔案中的配置引數值 原取值方式如下所示: @Value("${authox.sql.url}") private static String url; @Value("${authox.sql.username}") private stati

Mybatis學習總結一之MyBatis配置檔案中的配置及其優化

Mybatis介紹        MyBatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始對映,將

使用配置檔案打造可配置的視訊伺服器轉發平臺

Car-eye 開源團隊在做JT/T視訊轉發平臺的時候需要配置視訊伺服器的引數。用到TinyXML2,感覺非常好用,能快速完成自己的配置專案。 主要功能:實現對伺服器的IP,埠,音視訊引數的配置。可以採用一層節點完成設計。配置完成後達到如下效果:   <?xml v

springboot 配置檔案裡部分配置未生效

最近用springboot搭了個專案,上線過段時間就會出現卡死,猜測是資料庫連線池的連線被佔滿,用的連線池是druid,於是給專案加上了一個數據庫連線池監控。程式碼如下: @Configuration public class DruidConfiguration {   

MyBatis學習總結——優化MyBatis配置檔案中的配置

MyBatis學習總結——優化MyBatis配置檔案中的配置 一、連線資料庫的配置單獨放在一個properties檔案中   之前,我們是直接將資料庫的連線配置資訊寫在了MyBatis的conf.xml檔案中,如下: 複製程式碼 <?xml version="1.0" encodi

springboot專案logback.xml或者logback-spring.xml中讀取不到application.yml或application.properties配置檔案中的配置解決辦法

在springboot專案中我們可能想要實現不同環境的日誌專案配置不同,比如我想讓不同環境的日誌路徑不同。 這時候我們很容易想: 1、到將日誌路徑配置在springboot的:application-dev.yml,application-prod.yml,applica

springboot 配置檔案以及自動配置

1.springboot 預設配置檔案         SpringBoot使用預設的全域性的配置檔案,application.properties / application.yml,配置檔名固定。

Spark_Spark on YARN 提交配置檔案,讀取配置檔案

Spark ON YARN 的官方文件,基於Spark 2.1.1 To use a custom log4j configuration for the application master or executors, here are the options