Hibernate学习总结:OneToOne单向外键关联

来源:互联网 发布:debian和ubuntu哪个好 编辑:程序博客网 时间:2024/05/16 12:46

ex: 例子是一夫一妻(OneToOne单向外键关联)

一、首先是Annotation版本:

Husband.java:

package com.buaa.hibernate.bean;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;@Entitypublic class Husband {private int id;private String name;private Wife wife;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@OneToOne@JoinColumn(name="wifeId")public Wife getWife() {return wife;}public void setWife(Wife wife) {this.wife = wife;}}
Wife.java:

package com.buaa.hibernate.bean;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Wife {private int id;private String name;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>   <session-factory>      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>   <!-- Assume test is the database name -->   <property name="connection.url">jdbc:mysql://localhost/test</property>   <property name="connection.username">root</property>   <property name="connection.password">123456</property>      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>   <property name="show_sql">true</property>      <property name="format_sql">true</property>   <property name="hbm2ddl.auto">create</property><mapping class="com.buaa.hibernate.bean.Husband"/><mapping class="com.buaa.hibernate.bean.Wife"/></session-factory></hibernate-configuration>
二、是xml版本:

Husband.hbm.xml:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC  "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.buaa.hibernate.bean"><class name="Husband"><id name="id"><generator class="native" /></id><property name="name"/><many-to-one name="wife" column="wifeId" not-null="true"unique="true" /></class><class name="Wife"><id name="id"><generator class="native" /></id><property name="name"/></class></hibernate-mapping>

这里需要注意的是:Hiberante使用了many-to-one来实现one-to-one的关系映射,而且其中外键字段必须添加唯一约束。这样映射出来的表才能保证一对一的关系。

hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>   <session-factory>      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>   <!-- Assume test is the database name -->   <property name="connection.url">jdbc:mysql://localhost/test</property>   <property name="connection.username">root</property>   <property name="connection.password">123456</property>      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>   <property name="show_sql">true</property>      <property name="format_sql">true</property>   <property name="hbm2ddl.auto">create</property><mapping resource="com/buaa/hibernate/bean/Husband.hbm.xml"/></session-factory></hibernate-configuration>






0 0
原创粉丝点击