[原创]hibernate 一对一实践 by hjack
2008-02-23 09:29:46来源:互联网 阅读 ()
最近做的一个工程要用到Hibernate的一对一关联,比如论坛的一个主题对应一个作者。
hibernate的一对一关系有两种形式,一种是共享主键方式,另一种是惟一外键方式,因为这里用到的是在主题表里与作者表之间的对应关系,所以介绍的是惟一外键方式的一以一关联。
由于网上很多教程都说得不清楚,给出的实例不能正确运行,所以写下这份笔记,以便以后查询,并与大家分享,如有不对的地方请指正。
本测试使用MySQL数据库,Eclipse2.1平台,使用tanghan插件生成hbm文件。
1、新建数据库表如下:
CREATE TABLE `author` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `topic` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
`user_id` int(11) default NULL,
PRIMARY KEY (`id`)
);
2、用tanghan建立数据库连接,并对这两个表生成相应的hbm文件(也可以手工编写这些文件)。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
Topic.hbm.XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="model.Topic" table="topic">
<id column="id" length="11" name="id" type="integer">
<generator class="native"/>
</id>
<property column="name" length="50" name="name" type="string"/>
<property column="user_id" length="11" name="user_id" type="integer"/>
</class>
</hibernate-mapping>
Author.hbm.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="model.Author" table="author">
<id column="id" length="11" name="id" type="integer">
<generator class="native"/>
</id>
<property column="name" length="50" name="name" type="string"/>
</class>
</hibernate-mapping>
Author.Java文件如下:
package model;
import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class Author implements Serializable {
/** identifier field */
private int id;
/** nullable persistent field */
private String name;
/** full constructor */
public Author(java.lang.String name) {
this.name = name;
}
/** default constructor */
public Author() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public java.lang.String getName() {
return this.name;
}
public void setName(java.lang.String name) {
this.name = name;
}
public String toString() {
return new ToStringBuilder(this)
.append("id", getId())
.toString();
}
public boolean equals(Object other) {
if ( !(other instanceof Author) ) return false;
Author castOther = (Author) other;
return new EqualsBuilder()
.append(this.getId(), castOther.getId())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder()
.append(getId())
.toHashCode();
}
}
Topic.java文件如下:
package model;
import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class Topic implements Serializable {
/** identifier field */
private int id;
/** nullable persistent field */
private String name;
/** nullable persistent field */
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash