『壹』 在hibernate內如何配置一對一的關系
hibernate中實體關系表的配置,一對一關系:
在關系型資料庫中存在兩種表示一對一關系的設計方式,分別是「主鍵約束」和「唯一外鍵約束」。針對這兩種不同的設計,在hibernate中有兩種配置方法:
首先要明確,這兩種設計的實體關系都可以表示為:你中有我,我中有你。也就是說對象關系是一樣的
①主鍵約束
這種設計方式,是A表和B表都有一個相同的主鍵
比如夫妻關系表,如下:
class Hasband{
private int id;
private String name;
private Wife myWife;
getter和setter
}
以及
class Wife{
private int id;
private String name;
private Hasband myMan;
getter和setter
}
注意設計表的時候,一定要有一個主鍵
對應的表結構如下:
table t_hasband
t_id int
t_name varchar
以及
table t_wife
t_id int
t_name varchar
在hibernate中的配置則要注意兩點,第一:兩張表一定要建立級聯操作,第二:其中一張表的主鍵必須有一個class=「foreign」,關鍵配置如下:
實體A(丈夫):
<one-to-one name="myWife" class="...WifePo" cascade="all"→級聯操作></one-to-one>
實體B(妻子):
<id ...>
<generator class="foreign"→表示這個表的主鍵依賴於另一張表的主鍵(主鍵約束)
<para name="property">myMan</para>
</generator>
</id>
<one-to-one name="myMan" class="...Hasband"></one-to=one>
另外,我發現如果在使用Mysql時,在hibernate中設置主鍵自增時,設成native將會報錯,最好使用increment。
②唯一外鍵約束(注意唯一兩字)
對象關系不變
表的建立不一樣了,我們用公民與身份證的例子來說明,給公民一個唯一的表示身份證id的標識,,因為是唯一標識,所以建在那張表上沒有區別
表結構是:
t_citizen
t_id int primary key
t_name String
t_carId int
以及
t_card
t_id int primary key
t_name string
至於hibernate配置,這種情況可以看做多對一的一種特例;
對公民實體:
<many-to-one name="CitizenPo" class="..." cascade="all"→這里是必須得,因為另一張表依賴於這張表,沒有這條會報錯。unique="true"→唯一的 column=""/>
對於身份證而言:
<one-to-one name="citizen" class="" property-ref="card"→表明這是通過外鍵載入
cascade="all" →這句不寫 在存身份證表的時候公民表不會更新/>
『貳』 Hibernate配置
none:不做任何操作
create:啟動服務後,先drop刪掉表,然後通過映射文件自動創建資料庫表,每次啟動都會刪了表然後重建(當心使用)
create-drop: 也表示創建,只不過再系統關閉前執行一下drop
update: 這個操作啟動的時候會去檢查schema是否一致,如果不一致會做scheme更新
validate: 啟動時驗證現有schema與你配置的hibernate是否一致,如果不一致就拋出異常,並不做更新
『叄』 hibernate的配置文件
最小必要包為antlr.jar,cglib.jar,asm.jar, asm-attrs.jar, commons-collections.jar, commons-loggins.jar ,encache.jar, dom4j.jar,log4j.jar,jta.jar
Hibernate3.2 核心包作用
包 作用 說明
jta.jar 標準的JTA API 必要
commons-logging.jar 日誌功能 必要
commons-collections.jar 集合類 必要
antlr.jar ANother Tool for Language Recognition(antlr) 必要
dom4j.jar XML配置和映射解釋器 必要
Hibernate3.jar 核心庫 必要
asm.jar ASM位元組碼庫 如果使用「cglib」則必要
asm-attrs.jar ASM位元組碼庫 如果使用「cglib」則必要
ehcache.jar EHCache緩存 如果沒有其它的緩存,則它是必要的
cglib.jar CGLIB 位元組碼解釋器 如果使用「cglib」則必要
以下包可選
versioncheck.jar 版本檢查
swarmcache.jar
jboss-cache.jar TreeCache
jgroups.jar
xml-apis.jar JAXP API
c3p0-0.9.1.jar C3PO JDBC鏈接池
connector.jar JCA API
jboss-system.jar 使用TreeCache時必要
jacc-1_0-fr.jar JACC 庫
checkstyle-all.jar
junit.jar
javassist.jar Javassist 位元組碼解釋器
ant-lanuncher.jar
jaas.jar JAAS API
jdbc2_0-stdext.jar JDBC擴展API
ant-antlr.jar Ant antlr支持
jboss-jmx.jar
cleanimports.jar cleanimports
xerces.jar SAX parser JDK版本低於1.4時必要
jaxen-1.1-beta-7.jar Jaxen 如果想提高啟動性能則去使用
ant-junit.jar Ant junit support
ant-swing.jar ant swing support
ant.jar
proxool.jar Proxool JDBC連接池
concurrent.jar 使用TreeCache需要
syndiag2.jar
你要用什麼包,就導什麼包.
沒有導入JAR包的話,啟動伺服器的時候會有提示錯誤信息,找不到JAR包,你再導JAR也可以的.
樓主的這個問題要參考JPA相關知識了.建議你看下JPA的相關資料.
HIBERNATE實際上就是一個JPA的實現框架.
PA不是一種新的ORM框架,它的出現只是用於規范現有的ORM技術,它不能取代現在的HIBERNATE,TOPLINK等ORM框架.相反,在採用JPA開發時,我們仍將用到這些ORM框架,只是此時開發出來的應用不再依賴於某個持久化提供商.應用可以在不修改代碼的情況下在任何JPA環境下運行,真正做到低耦合,可擴展的程序設計.
JPA只是一個規范.
那個persistence.xml配置文件,就相當於hibernate的那個配置文件
『肆』 hibernate的配置與使用方法
hibernate.cfg.xml配置文件中的映射出現錯誤
『伍』 Hibernate 環境的配置
把hibernate的jar包(我的是hibernate2.jar,不知道你用的什麼版本)復制到tomcat/webapps/你的應用程序/lib文件夾下
然後在classpath中設置一下就可以用了(既然你會用tomcat,這個會吧)
『陸』 hibernate關系配置
LZ你先把你的問題說清楚啊。
你是先添加好B表的數據,B:column3空著,然後添加A表數據,同時更新B的3.
還是同時更新A,B兩個表啊?
『柒』 hibernate中配置mysql的url如何配置
看看行不
『捌』 Hibernate如何配置!
查收,
『玖』 如何在hibernate配置文件
Hibernate給人的感受是靈活的,要達到同一個目的,我們可以使用幾種不同的辦法。就拿Hibernate配置來說,常用的有如下三種方式,任選其一。
在 hibernate.cfg.xml 中加入元素 <property>、<mapping>,放置在類路徑(classpath)的根目錄下。
將 hibernate.properties 放置放在類路徑的根目錄下。
可編程的配置方式,即在程序中配置Hibernate的啟動參數、載入映射文件,需要用Configuration介面來實現這一方式。
使用hibernate.cfg.xml是我比較喜歡的方式,一方面xml天生的優勢——良好的可讀性,讓配置的意圖一目瞭然。另一方面這是官方推薦使用的,如果同時在hibernate.cfg.xml和hibernate.properties對Hibernate進行了配置,那麼前者將覆蓋後者。
hibernate.properties可以非常的簡潔明了,並且有一種linux配置文件的風格。以#開始一行的注釋,用鍵值對的方式存儲配置參數。
『拾』 hibernate4.怎麼配置
和hibernate3差不多,只不過沒有hibernatetemplate了