组件映射、继承映射
一、组件映射
1.概念
类组合关系的映射,也叫作组件映射!
注意:组件类和被包含的组件类,共同映射到一张表!
2.需求
汽车与车轮
3.数据库T_Car
主键 汽车名称 轮子大小 个数
4.Car
/**
* Created by qianxingzhe on 16/5/28.
*/
public class Car {
private int id;
private String name;
private Wheel wheel;
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;
}
public Wheel getWheel() {
return wheel;
}
public void setWheel(Wheel wheel) {
this.wheel = wheel;
}
}
5.Wheel
/**
* Created by qianxingzhe on 16/5/28.
*/
public class Wheel {
private int count;
private int size;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
6.Car.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.yly.component">
<class name="Car" table="t_car">
<id name="id">
<generator class="native">
</generator>
</id>
<property name="name" length="20"/>
<!--
组件映射
-->
<component name="wheel" class="Wheel">
<property name="size"></property>
<property name="count"></property>
</component>
</class>
</hibernate-mapping>
二、继承映射
1.简单继承映射
有多少个子类,写多少个映射文件!
2.简单继承代码
// 动物类
public abstract class Animal {
private int id;
private String name;
}
<!--
简单继承
-->
<hibernate-mapping package="cn.itcast.e_extends1">
<class name="Cat" table="t_Cat">
<!-- 简单继承映射: 父类属性直接写 -->
<id name="id">
<generator class="native"></generator>
</id>
<property name="na"></property>
<property name="catchMouse"></property>
</class>
</hibernate-mapping>
@Test
public void getSave() {
Session session = sf.openSession();
session.beginTransaction();
// 保存
// Cat cat = new Cat();
// cat.setName("大花猫");
// cat.setCatchMouse("抓小老鼠");
// session.save(cat);
// 获取时候注意:当写hql查询的使用,通过父类查询必须写上类的全名
Query q = session.createQuery("from cn.itcast.e_extends1.Animal");
List<Animal> list = q.list();
System.out.println(list);
session.getTransaction().commit();
session.close();
}
继承映射
1.所有子类映射到一张表
2.每个类映射到一张表
3.每个子类映射一张表,父类不对应表