Hibernate继承映射简单入门
来源:互联网 发布:网络小手分享论 编辑:程序博客网 时间:2024/06/06 01:02
首先,映射继承分三种
1。一个类的继承树一个表
基于xml
Teacher类
public class Teacher { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
子类Class_Teacher
public class Class_Teacher extends Teacher{ private String classId; private Integer classNumber; private Integer ground; public Class_Teacher() { super(); } public Class_Teacher(String classId, Integer classNumber, Integer ground) { super(); this.classId = classId; this.classNumber = classNumber; this.ground = ground; } public String getClassId() { return classId; } public void setClassId(String classId) { this.classId = classId; } public Integer getClassNumber() { return classNumber; } public void setClassNumber(Integer classNumber) { this.classNumber = classNumber; } public Integer getGround() { return ground; } public void setGround(Integer ground) { this.ground = ground; }}
子类Info_Teacher
public class Info_Teacher extends Teacher{ private String weight; private String height; public String getWeight() { return weight; } public void setWeight(String weight) { this.weight = weight; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; }}
teacher.hbm.xml
<?xml version='1.0' encoding='UTF-8'?> <!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.north.java.Hibernate.Teacher.Teacher" table="Teacher"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <discriminator column="type" type="string"/> <property name="Name"></property> <subclass name="com.north.java.Hibernate.Teacher.Class_Teacher" discriminator-value="class_teacher"> <property name="classId"></property> <property name="classNumber"></property> <property name="ground"></property> </subclass> <subclass name="com.north.java.Hibernate.Teacher.Info_Teacher" discriminator-value="info_teacher"> <property name="weight"></property> <property name="height"></property> </subclass> </class> </hibernate-mapping>
在hibernate的配置文件添加 <mapping resource="com/north/java/Hibernate/Teacher/Teacher1.hbm.xml"/>
创建和储存
public class TestTeacher { public static void main(String[] args) { // TODO Auto-generated method stub TestTeacher tt = new TestTeacher(); Class_Teacher ct = new Class_Teacher("2,3", 2, 3); ct.setName("BB"); Info_Teacher it = new Info_Teacher(); it.setHeight("170"); it.setWeight("100"); it.setName("CC"); tt.CreateTeacher("AA", ct, it); HibernateUtil.getSessionFactory().close(); } public void CreateTeacher(String name, Class_Teacher ct, Info_Teacher it) { //HibernateUtil是工具类,返回SessionFactory对象 Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Teacher teacher = new Teacher(); teacher.setName(name); session.save(teacher); session.save(ct); session.save(it); session.getTransaction().commit(); }}
结果
基于注解
Teacher类
@Entity@Table(name="TeacherAnnoation")@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)@DiscriminatorValue(value="teacher")public class Teacher { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") private Integer id; @Column(name="name") private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
Class_Teacher类
加上@Entity@DiscriminatorValue("class_taecher")
Info_Teacher类
加上@Entity@DiscriminatorValue("info_teacher")
在
hibernate的配置文件中
添加
<mapping class="com.north.java.Hibernate.Teacher.Teacher"></mapping> <mapping class="com.north.java.Hibernate.Teacher.Class_Teacher"></mapping> <mapping class="com.north.java.Hibernate.Teacher.Info_Teacher"></mapping>
结果
2.每一个字类一个表
基于xml
teacher.hbm.xml文件
<?xml version='1.0' encoding='UTF-8'?> <!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.north.java.Hibernate.Teacher.Teacher" table="Teacher2"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="Name"></property> <joined-subclass name="com.north.java.Hibernate.Teacher.Class_Teacher" table="class_teacher2"> <key column="cid"/> <property name="classId"></property> <property name="classNumber"></property> <property name="ground"></property> </joined-subclass> <joined-subclass name="com.north.java.Hibernate.Teacher.Info_Teacher" table="info_teacher2"> <key column="iid"/> <property name="weight"></property> <property name="height"></property> </joined-subclass> </class> </hibernate-mapping>
结果
基于注解
teacher类
加上
@Entity@Table(name="TeacherAnnoation1")@Inheritance(strategy=InheritanceType.JOINED)
class_Teacher类
加上
@Entity@Table(name="class_table_annotion1")@PrimaryKeyJoinColumn(name="ID")
info_Teacher类
加上
@Entity@Table(name="info_table_annotion1")@PrimaryKeyJoinColumn(name="ID")
结果
TeacherAnnoation1表
class_table_annotion1表
info_table_annotion1表
3.每个类一张表
基于xml
Teacher.hbm.xml
<?xml version='1.0' encoding='UTF-8'?> <!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.north.java.Hibernate.Teacher.Teacher" table="Teacher1"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="assigned" /> </id> <property name="Name"></property> <union-subclass name="com.north.java.Hibernate.Teacher.Class_Teacher" table="class_teacher1"> <property name="classId"></property> <property name="classNumber"></property> <property name="ground"></property> </union-subclass> <union-subclass name="com.north.java.Hibernate.Teacher.Info_Teacher" table="info_teacher1"> <property name="weight"></property> <property name="height"></property> </union-subclass> </class> </hibernate-mapping>
注意这个的id是要自己添加的
class_teacher表
info_teacher表
基于注解
teacher类加上
@Entity@Table(name="TeacherAnnoation2")@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
Class_teacher类
@Entity@Table(name="class_table_annotion2")@AttributeOverrides({ @AttributeOverride(name = "id", column = @Column(name = "id")), @AttributeOverride(name = "name", column = @Column(name = "name")) })
info_Teacher类
@Entity@Table(name="info_table_annotion2")@AttributeOverrides({ @AttributeOverride(name = "id", column = @Column(name = "id")), @AttributeOverride(name = "name", column = @Column(name = "name")) })
结果
TeacherAnnoation2表
class_table_annotion2表
info_table_annotion2表
阅读全文
0 0
- Hibernate继承映射简单入门
- Hibernate基础------》关系映射---》继承映射-》简单映射
- Hibernate入门08 - 继承映射1
- Hibernate入门09 - 继承映射2
- Hibernate入门08 - 继承映射1
- Hibernate入门09 - 继承映射2
- Hibernate继承映射的简单示例
- Hibernate入门(5):关联映射&继承映射
- SSH框架之Hibernate的组件映射、简单继承映射
- Hibernate入门07_继承映射01_discriminator方式
- Hibernate入门07_继承映射02_joined方式
- Hibernate入门07_继承映射03_union方式
- Hibernate高级映射 --- 继承映射
- Hibernate高级映射--继承映射
- Hibernate高级映射-继承映射
- Hibernate映射解析---继承映射
- Hibernate映射解析---继承映射
- Hibernate映射解析---继承映射
- SSH与SSM学习之Struts211——拦截器
- 弃马十三招再分析
- 第一篇博文
- AMQP 0-9-1 模型解释——原文翻译
- JAVA中产生随机数的方式
- Hibernate继承映射简单入门
- LeetCode 6. ZigZag Conversion
- 巨坑之mysql5.6.37中文乱码问题
- 值传递和引用传递
- 序列化,反序列化,以及其应用
- Manipulating I2C Peripheral Directly in Linux User Space
- Android进阶之路
- Mysql_NOT IN VS NOT EXISTS
- Mono Developer代码提示