一、首先是一對(duì)多,多對(duì)一關(guān)聯(lián)映射,表模型就用公司表和員工表,它們的結(jié)構(gòu)是公司表兩個(gè)字段:公司編號(hào)(自增長(zhǎng)),公司名稱(chēng);員工表三個(gè)字段:?jiǎn)T工編號(hào)(自增長(zhǎng)),員工姓名,所屬公司編號(hào)。
Company.java里面的代碼,省略了get和set方法
2
3 Company() {
4 }
5
6 private Integer companyId;
7 private String companyName;
8 private Set<User> user;
9
10 ...
11 }
User.java里面的代碼,省略get和set方法
2
3 User() {
4 }
5
6 private Integer UserId;
7 private String userName;
8 private Company company;
9
10 ...
11 }
相關(guān)的Hibernate配置文件,Company.hbm.xml
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4 <hibernate-mapping package="cn.dy.bean">
5 <class name="Company" table="tb_company" catalog="learn">
6 <id name="companyId" type="integer">
7 <column name="companyId" />
8 <generator class="identity" />
9 </id>
10 <property name="companyName" type="string">
11 <column name="companyName" length="200" not-null="true">
12 <comment>公司名稱(chēng)</comment>
13 </column>
14 </property>
15 <set name="user">
16 <key column="companyId" />
17 <one-to-many class="User" />
18 </set>
19 </class>
20 </hibernate-mapping>
User.hbm.xml代碼為:
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4 <hibernate-mapping>
5 <class name="cn.dy.bean.User" table="tb_user" catalog="learn">
6 <id name="userId" type="integer">
7 <column name="userId" />
8 <generator class="identity" />
9 </id>
10 <property name="userName" type="string">
11 <column name="userName" length="16" not-null="true">
12 <comment>帳號(hào)</comment>
13 </column>
14 </property>
15
16 <!-- 多對(duì)一,多個(gè)員工對(duì)應(yīng)一個(gè)公司,員工表內(nèi)companyId字段,對(duì)應(yīng)公司表的主鍵companyId -->
17 <many-to-one name="company" column="companyId" not-null="true" />
18 </class>
19 </hibernate-mapping>
對(duì)應(yīng)這4段代碼,需要注意的是:
一對(duì)多配置
1.Company.java里面加入屬性Set<User>;
2.Company.hbm.xml文件里面加上set配置,詳細(xì)見(jiàn)上面代碼;
多對(duì)一配置
4.User.java里面不能出現(xiàn)屬性companyId;
二、一對(duì)一映射,員工表和身份證號(hào)碼表(編號(hào)字段,和員工表員工編號(hào)一致;身份證號(hào)碼字段)
2
3 User() {
4 }
5
6 private Integer userId;
7 private String userName;
8 private IdCard idCard;
9
10 ...
11 }
IdCard.java代碼:
2
3 IdCard() {
4 }
5
6 private Integer id;
7 private String cardNum;
8 private User user;
9
10 ...
11 }
User.hbm.xml代碼
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4 <hibernate-mapping>
5 <class name="cn.dy.bean.User" table="tb_user" catalog="learn">
6 <id name="userId" type="integer">
7 <column name="userId" />
8 <generator class="identity" />
9 </id>
10 <property name="userName" type="string">
11 <column name="userName" length="16" not-null="true">
12 <comment>帳號(hào)</comment>
13 </column>
14 </property>
15 <one-to-one name="idCard" />
16 </class>
17 </hibernate-mapping>
IdCard.hbm.xml代碼
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4 <hibernate-mapping>
5 <class name="cn.dy.bean.IdCard" table="tb_idCard" catalog="learn">
6 <id name="id">
7 <generator class="foreign">
8 <param name="property">user</param>
9 </generator>
10 </id>
11 <property name="cardNum" type="string">
12 <column name="cardName" length="18" not-null="true">
13 <comment>身份證號(hào)碼</comment>
14 </column>
15 </property>
16 <one-to-one name="user" />
17 </class>
18 </hibernate-mapping>
三、摘編的其他網(wǎng)站信息:(技術(shù)是讓使用的,而不是一種桎梏,所以要靈活利用,不能說(shuō)我使用Hibernate就必須用映射,有時(shí)候還要考慮效率問(wèn)題,具體自己把握吧)
Hibernate 一對(duì)一"連接表"雙向關(guān)聯(lián)
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<join table="join" optional="true">
<key column="personId" unique="true"/>
<many-to-one name="address" column="addressId" not-null="true" unique="true"/>
</join>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
<join table="join" optional="true" inverse="true">
<key column="addressId" unique="true"/>
<many-to-one name="person" column="personId" not-null="true" unique="true"/>
</join>
</class>
</hibernate-mapping>
Hibernate 一對(duì)一"主鍵"雙向關(guān)聯(lián)
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<one-to-one name="address" cascade="all"/>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="addressDetail"/>
<!--表明主鍵由關(guān)聯(lián)屬性生成-->
<one-to-one name="person" cascade="all" constrained="true"/>
</class>
</hibernate-mapping>
Hibernate 一對(duì)一"外鍵"雙向關(guān)聯(lián)
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<one-to-one name="address" cascade="all" property-ref="person"/>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
<many-to-one name="person" unique="true"/>
</class>
</hibernate-mapping>
Hibernate 多對(duì)多單向關(guān)聯(lián)
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<!--映射集合屬性,join是連接表表名-->
<set name="addresses" table="join" >
<key column="personId"/>
<many-to-many column="addressId" class="cn.dy.Address"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
</class>
</hibernate-mapping>
Hibernate 多對(duì)一"連接表"單向關(guān)聯(lián)
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<join table="join">
<key column="personId"/>
<many-to-one name="address"/>
</join>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
</class>
</hibernate-mapping>
Hibernate 多對(duì)一外鍵單向關(guān)聯(lián)
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<many-to-one name="address" column="addressId"/>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
</class>
</hibernate-mapping>
Hibernate 一對(duì)多連接表單向關(guān)聯(lián)
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<set name="addresses" table="join" >
<key column="personId"/>
<many-to-many column="addressId" unique="true" class="cn.dy.Address"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
</class>
</hibernate-mapping>
Hibernate 一對(duì)一主鍵單向關(guān)聯(lián)
<id name="personId">
<generator class="foreign">
<param name="property">address</param>
</generator>
</id>
<one-to-one name="address" constrained="true"/>
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId" column="presonid">
<generator class="foreign">
<param name="property">address</param>
</generator>
</id>
<property name="name"/>
<property name="age"/>
<one-to-one name="address" constrained="true"/>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
</class>
</hibernate-mapping>
Hibernate 一對(duì)一外鍵單向關(guān)聯(lián)
<many-to-one name="address" column="addressId" unique="true"/>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressId">
<generator class="identity"/>
</id>
<property name="addressDetail"/>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personId">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<many-to-one name="address" column="addressId" unique="true"/>
</class>
</hibernate-mapping>
Hibernate 一對(duì)多外鍵單向關(guān)聯(lián)
<set name="addresses" table="ADDRESS" cascade="all" >
<key column="personid"/>
<one-to-many class="cn.dy..Address"/>
</set>
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personid">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<set name="addresses" table="ADDRESS" cascade="all" >
<key column="personid"/>
<one-to-many class="cn.dy..Address"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressid">
<generator class="identity"/>
</id>
<property name="addressdetail"/>
</class>
</hibernate-mapping>
Hibernate 一對(duì)一連接表單向關(guān)聯(lián)
<join table="join">
<key column="personid"/>
<many-to-one name="address" unique="true"/>
</join>
<hibernate-mapping>
<class name="cn.dy.Person" table="PERSON">
<id name="personid">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<join table="join">
<key column="personid"/>
<many-to-one name="address" unique="true"/>
</join>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.dy.Address" table="ADDRESS">
<id name="addressid">
<generator class="identity"/>
</id>
<property name="addressdetail"/>
</class>
</hibernate-mapping>
簽名:有能力、有擔(dān)當(dāng)、有情義的人才能稱(chēng)之為男人,而不是由性別決定。