自己创建 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