自己创建 hibernate mapping不一定要用 MyEclipse 的 Hibernate 框架生成数据库表的映射文件,其实很简单:?
自己创建 hibernate mapping
不一定要用 MyEclipse 的 Hibernate 框架生成数据库表的映射文件,其实很简单:
?
在 Eclipse 环境中,新建一个项目并添加 Hibernate 框架.
?
假设有两个表,分别是 MainClass 和 SubClass ,下面是两个表的表结构:(使用 MySQL 数据库)

Create?table?MainClass(

--ID

MID?int?AUTO_INCREMENT?primary?key,

--main?class?name

MClsName?varchar(20)?not?null)ENGINE=MyISAM?DEFAULT?CHARSET=utf8;


Create?table?SubClass(

--sub?class?ID

SID?int?AUTO_INCREMENT?primary?key,

--sub?class?name

SClsName?varchar(20)?not?null,

--main?class?ID?(外键)

MID?int?not?null)ENGINE=MyISAM?DEFAULT?CHARSET=utf8;
现在来创建 MainClass 的类 MainClass.java,代码如下:
?


public?class?MainClass?...{

????private?int?mainClsId;

????private?String?mainClsName;


????//?mainClsId?Getter?and?Setter


????public?int?getMainClsId()?...{

????????return?mainClsId;

????}


????public?void?setMainClsId(int?mainClsId)?...{

????????this.mainClsId?=?mainClsId;

????}


????//?mainClsName?Getter?and?Setter


????public?String?getMainClsName()?...{

????????return?mainClsId;

????}


????public?void?setMainClsName(String?mainClsName)?...{

????????this.mainClsName?=?mainClsName;

????}

}



//SubClass.java,代码如下:


public?class?SubClass?...{

????private?int?subClsId;

????private?String?subClsName;

????private?int?mainClsId;

????private?MainClass?mainClass;

????

????//?mainClass?Getter?and?Setter


????public?MainClass?getMainClass()?...{

????????return?mainClass;

????}


????public?void?setMainClass(MainClass?mainClass)?...{

????????this.mainClass?=?mainClass;

????}

????//?mainClsId?Getter?and?Setter


????public?int?getMainClsId()?...{

????????return?mainClsId;

????}


????public?void?setMainClsId(int?mainClsId)?...{

????????this.mainClsId?=?mainClsId;

????}

????

????//?subClsId?Getter?and?Setter


????public?int?getSubClsId()?...{

????????return?subClsId;

????}


????public?void?setSubClsId(int?subClsId)?...{

????????this.subClsId?=?subClsId;

????}

????

????//?subClsName?Getter?and?Setter


????public?String?getSubClsName()?...{

????????return?subClsName;

????}


????public?void?setSubClsName(String?subClsName)?...{

????????this.subClsName?=?subClsName;

????}

????

}
接着就是写 映射文件了,
MainClass.java 的映射文件 MainClass.hbm.xml
?

<?xml?version="1.0"?>

<!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--?

????Mapping?file?autogenerated?by?MyEclipse?-?Hibernate?Tools

-->

<hibernate-mapping>

????<class?name="com.demo.model.MainClass"?table="MainClass"?catalog="test">

????????<id?name="mainClsId"?type="integer"><!--name?是?MainClass.java?中的?mainClsId?属性-->

????????????<column?name="MID"?/><!--name?是?MainClass?表中对应的列名-->

????????????<generator?class="native"?/>

????????</id>

????????<property?name="mainClsName"?type="string">

????????????<column?name="MClsName"?length="20"?not-null="true"?/>

????????</property>

????</class>

</hibernate-mapping>
SubClass.java 的映射文件 SubClass.hbm.xml
?

<?xml?version="1.0"?>

<!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--?

????Mapping?file?autogenerated?by?MyEclipse?-?Hibernate?Tools

-->

<hibernate-mapping>

????<class?name="com.demo.model.SubClass"?table="SubClass"?catalog="test">

????????<id?name="subClsId"?type="integer"><!--name?是?SubClass.java?中的?subClsId?属性-->

????????????<column?name="SID"?/><!--name?是?SubClass?表中对应的列名-->

????????????<generator?class="native"?/>

????????</id>

????????<property?name="subClsName"?type="string">

????????????<column?name="SClsName"?length="20"?not-null="true"?/>

????????</property>

????????<!--这里很重要?,作用是声明这段是数据库表中的外键-->

????????<property?name="mainClsId"?column="MID"?/>

????????<!--这里的?column?,应该对应声明?外键的?name?,即?mainClsId?,而?name="mainClass"?就是?SubClass?里的一个属性-->

????????????????<many-to-one?name="mainClass"?column="mainClsId"?

????????????????????????class="com.demo.model.MainClass"?

????????????????????????lazy="false"?

????????????????????????not-found="ignore"?

????????????????????????cascade="none"?

????????????????????????insert="false"?

????????????????????????update="false"?/>

????</class>

</hibernate-mapping>
好..最后一步就是在 hibenate 的配置文件中加上这两个 映射文件 地址就可以了
?

????<mapping?resource="com/demo/model/MainClass.hbm.xml"></mapping>

????<mapping?resource="com/demo/model/SubClass.hbm.xml"></mapping>
?
大功告成~~~~ :)
?
来源:http://www.fish888.com/hibernate-mapping-t174284