Hibernate继承映射

  在对象模型之中有一种继承关系,当然也可以把这些关系映射到关系型数据库表中比如说有一个种族,他的名字叫做People,

package com.hibernate;

public class People {

	private int id ;
	private String name;
	public 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;
	}
}

 
五百年后有了American,Chinese...他们都有人People继承而来,现在我们需要把他们映射到数据库中

package com.hibernate;

public class Chinese {

	private String pingpong;     // 继承Peopel
  
	public String getPingpong() {
		return pingpong;
	}

	public void setPingpong(String pingpong) {
		this.pingpong = pingpong;
	}
}

package com.hibernate;

public class American extends People {  // 继承Peopel

	private String bascketball;

	public String getBascketball() {
		return bascketball;
	}

	public void setBascketball(String bascketball) {
		this.bascketball = bascketball;
	}
}

 现在配置配置文件方便映射到数据库中

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.hibernate.People">
		<id name="id">
			<generator class="native"/> <!--自增方式生成主键--->
		</id>
		<discriminator column="type" type="string"/> <!--鉴别器--->
		<property name="name"/>
		<subclass name="com.hibernate.Chinese" discriminator-value="C">
			<property name="pingpong"/>
		</subclass>
		<subclass name="com.hibernate.American" discriminator-value="A">
			<property name="bascketball"/>
		</subclass>
	</class>
</hibernate-mapping>

 好了,现在可以写一个数据库映射的导出类将Peopel,Chinese,Americand都同过Hibernate继承映射到一张表里面

package com.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB {
	public static void main(String[] args) {
		Configuration cfg = new Configuration().configure();
		SchemaExport schemaExport = new SchemaExport(cfg);
		schemaExport.create(true, true);
	}
}

 

 运行SchemaExport,OK。 Hibernate继承映射到一张表里面了

mysql> desc people;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| type        | varchar(255) | NO   |     | NULL    |                |
| name        | varchar(255) | YES  |     | NULL    |                |
| pingpong    | varchar(255) | YES  |     | NULL    |                |
| bascketball | varchar(255) | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

 这种Hibernate继承映射,是一种比较常用的方式,还有另外两种 Hibernate继承映射,其他的两种 Hibernate继承映射生成的表和类都是一一对应的,即有多张表。一般那样的 Hibernate继承映射都比较少用,今天就不讨论了

你可能感兴趣的:(Hibernate,mysql,.net,xml)