hibernate一对一外键单向关联
生活随笔
收集整理的這篇文章主要介紹了
hibernate一对一外键单向关联
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
與上篇相對(duì)應(yīng),還是client和address是一對(duì)一的外鍵關(guān)聯(lián)關(guān)系,address表中的主鍵ID與client表中的外鍵CLIENTADDRESSID構(gòu)成一對(duì)一外鍵關(guān)聯(lián)關(guān)系.
表結(jié)構(gòu)和sql語(yǔ)句就不說(shuō)了,看下外鍵雙向關(guān)聯(lián)和外鍵單向關(guān)聯(lián)的不同點(diǎn)和注意項(xiàng):
雙向關(guān)聯(lián):
? ?可以根據(jù)client得到address,也可以根據(jù)address得到client,雙向關(guān)聯(lián)時(shí)需要在client.hbm.xml中配置?
<many-to-one unique=”true” name=”client_address” column=”CLIENTADRESSID” cascade=”all”></many-to-one>;
在address.hbm.xml中配置
<one-to-one name=”address_client” property-ref=”client_address”></one-to-one>,property-ref的值應(yīng)與<many-to-one>中的name屬性的值對(duì)應(yīng),說(shuō)明client對(duì)象是與address對(duì)象建立的關(guān)聯(lián)關(guān)系.
單向關(guān)聯(lián):
只可以根據(jù)client得到address,單向關(guān)聯(lián)時(shí)只需在client.hbm.xml中配置
<many-to-one unique=”true” name=”client_address” column=”CLIENTADDRESSID” cascade=”all”>
<?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><property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property><property name="connection.url">jdbc:mysql://localhost:3306/onetoone</property><property name="connection.username">root</property><property name="connection.password">123456</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- 顯示sql語(yǔ)句 --><property name="hibernate.show_sql">true </property> <property name="format_sql">true</property><!-- 讓輸出的sql語(yǔ)句格式化 --><mapping resource="com/hust/javabeans/Address.hbm.xml" /><mapping resource="com/hust/javabeans/Client.hbm.xml" /> </session-factory></hibernate-configuration>
Client.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping><class name="com.hust.javabeans.Client" table="client"><id name="id" column="ID" type="integer"><generator class="identity"></generator></id><property name="clientname" column="CLIENTNAME" type="string"></property><property name="phone" column="PHONE" type="string"></property><property name="email" column="EMAIL" type="string"></property><!-- 映射Client和Address的一對(duì)一外鍵關(guān)聯(lián),唯一多對(duì)一,實(shí)際上時(shí)一對(duì)一關(guān)系,這里的name是Client的屬性,column是外鍵--><many-to-one name="client_address" class="com.hust.javabeans.Address" column="CLIENTADDRESSID" cascade="all" unique="true"></many-to-one></class> </hibernate-mapping>
Address.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.hust.javabeans.Address" table="address"><id column="ID" name="id" type="integer"><generator class="identity"/></id><property name="province" column="PROVINCE" type="string"/><property name="city" column="CITY" type="string"/><property name="street" column="STREET" type="string"/><property name="zipcode" column="ZIPCODE" type="string"/><!-- 映射Client和Address的一對(duì)一外鍵關(guān)聯(lián),name是Address的屬性,property-ref是Client中的屬性client_address,many-to-one的name屬性的值,表明建立了從address對(duì)象到company對(duì)象的關(guān)聯(lián) --><!-- <one-to-one name="address_client" class="com.hust.javabeans.Client" property-ref="client_address"/> --></class> </hibernate-mapping>
總結(jié)
以上是生活随笔為你收集整理的hibernate一对一外键单向关联的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate的一对一主键双向映射关
- 下一篇: struts2中action向actio