Hibernate 映射 POJO 过程

我的环境是Eclipse3.3(Europa)+hibernate3+oracle10g

一. hibernate生成

    1. 生成hibernate.cfg.xml文件,修改相应的数据库连接参数。

<?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">
<hibernate-configuration>
    <session-factory name="boxfmk">
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.password">devgen</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@server01:1521:orcl</property>
        <property name="hibernate.connection.username">devgen</property>
        <property name="hibernate.default_schema">DEVGEN</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
    </session-factory>
</hibernate-configuration>

 

    2. open hibernate code generation dialogue中设置一下。在main标签中设置输出生成包的路径等,在exporters标签中设置所要生成的文件类型,这里选择.hbm和.java文件。如图一所示。

 

二. 相应的修改

    1. 所有的hbm文件,加入 “lazy=false”。

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2008-3-19 11:03:14 by Hibernate Tools 3.2.0.b9 -->
<hibernate-mapping>
    <class name="org.wti.emergencyProcessRecord.domain.EmergencyProcessRecord" table="EMERGENCY_PROCESS_RECORD" lazy="false">

... 

    2. 类的修改

        1)    生成的类全部改成抽象类,类名前加abstract咯,文件名也加上abstract吧;

// Generated 2008-3-19 11:03:13 by Hibernate Tools 3.2.0.b9

/**
 * EmergencyProcessRecord generated by hbm2java
 */

public abstract class AbstractEmergencyProcessRecord implements java.io.Serializable {
    ...
}

 

        2)    删除类中的构造函数(这个不用多解释啦);

        3)    类中加上equals和hashcode方法。编辑界面上点击鼠标右键,弹出菜单中选择commons4E lang->generate Equals and Hashcode,在select fields中只选择id一项,如图二所示。 

@Override
	public boolean equals(final Object other) {
		if (!(other instanceof AbstractEmergencyProcessRecord))
			return false;
		AbstractEmergencyProcessRecord castOther = (AbstractEmergencyProcessRecord) other;
		return new EqualsBuilder().append(id, castOther.id).isEquals();
	}

	@Override
	public int hashCode() {
		return new HashCodeBuilder().append(id).toHashCode();
	}

  

        4)    重新生成tostring方法,同上,不过这次select fields需要全部选中;

@Override
	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", id).append("name", name).append(
				"startDate", startDate).append("endDate", endDate).append("place", place).append("personList",
				personList).append("accident", accident).append("processDescription", processDescription).append(
				"result", result).append("assessment", assessment).append("author", author).append("lastUpdate",
				lastUpdate).append("orgId", orgId).toString();
	}

 

        5)    在生成文件同路径下,新建类文件,名称就是hibernate所生成的java文件的名字(原来的文件已经改名字了,前面加abstract成抽象类了),生成后将鼠标光标点在类名上,按ctrl+1,在弹出的菜单中选择add generated serial version id,会产生serialVersionUID,如图三所示。

public class EmergencyProcessRecord extends AbstractEmergencyProcessRecord {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6952531987128218368L;

}

     这就完成了domain层的映射,接下来该考虑业务功能了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值