例:
Computer类,是抽象类,是父类
public abstract class Computer{
private int id;
private int price;
private String manufacturer;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getManufacturer(){
return manufacturer;
}
public void setManufacturer(String manufacturer){
this.manufacturer = manufacturer;
}
public int getPrice(){
return price;
}
public void setPrice(int price){
this.price = price;
}
}
子类台式机 Desktop类
public class Desktop extends Computer{
private boolean isLCD;
public boolean isLCD(){
return isLCD;
}
public void setLCD(boolean isLCD){
this.isLCD = isLCD;
}
}
子类笔记本电脑 Notepad类
public class Notepad extends Computer{
private float weight;
private float thickness;
public float getThickness(){
return thickness;
}
public void setThickness(float thickness){
this.thickness = thickness;
}
public float getWeight(){
return weight;
}
public void setWeight(float weight){
this.weight = weight;
}
}
所有类建一个表的映射文件
<hibernate-mapping package="alan.hbn.inheritance.entity">
<class name="Computer" table="computer_tph" discriminator-value="c">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<discriminator column="category" type="character" />
<!--用来表识父子类的标记字段-->
<property name="price" column="price" type="integer" not-null="true"/>
<property name="manufacturer" column="manufacturer" type="string" length="30" not-null="true"/>
<!--subclass是定义子类中特有部分的标签-->
<subclass name="Desktop" discriminator-value="d">
<!--discriminator-value属性是指定本类的标识符的-->
<property name="LCD" column="islcd" type="yes_no" />
<!--
指定子类的特有属性 type=”yes_no”是把布尔值转成单字节的存储数据库的类型,如果为true就会在字段中写入“Y”,反之为“N”
-->
</subclass>
<subclass name="Notepad" discriminator-value="n">
<property name="weight" column="weight" type="float" />
<property name="thickness" column="thickness" type="float" />
</subclass>
</class>
</hibernate-mapping>
只为具体类建表的配置文件,还可以将这两个类的配置文件分开来写,这样就可单表的映射文件没有区别了。
<hibernate-mapping package="alan.hbn.inheritance.entity">
<class name="Computer" abstract="true">
<id name="id" column="id" type="integer">
<generator class="increment" />
</id>
<property name="price" column="price" type="integer" not-null="true"/>
<property name="manufacturer" column="manufacturer" type="string" length="30" not-null="true"/>
<!--union-subcalss标签是指定子类对应的表和子类特有的属性-->
<union-subclass name="Desktop" table="desktop">
<property name="LCD" column="islcd" type="yes_no" />
</union-subclass>
<union-subclass name="Notepad" table="notepad">
<property name="weight" column="weight" type="float" />
<property name="thickness" column="thickness" type="float" />
</union-subclass>
</class>
</hibernate-mapping>
每个类建一格表的配置文件
<hibernate-mapping package="alan.hbn.inheritance.entity">
<class name="Computer" table="computer_tpc">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="price" column="price" type="integer" not-null="true"/>
<property name="manufacturer" column="manufacturer" type="string" length="30" not-null="true"/>
<!--union-subcalss标签是指定子类对应的表和子类特有的属性-->
<joined-subclass name="Desktop" table="desktop_tpc">
<key column="computerid" />
<!--指定使用父类的Id生成策略-->
<property name="LCD" column="islcd" type="yes_no" />
</joined-subclass>
<joined-subclass name="Notepad" table="notepad_tpc">
<key column="computerid" />
<property name="weight" column="weight" type="float" />
<property name="thickness" column="thickness" type="float" />
</joined-subclass>
</class>
</hibernate-mapping>
分享到:
相关推荐
**5.4 Hibernate知识辅导(2--3)** - **查询语言**: HQL和Criteria API的使用。 - **分页查询**: 实现分页查询的方法。 - **排序和过滤**: 对查询结果进行排序和过滤。 **5.5 Hibernate知识辅导(3--1)** - **...
这个标签表明这个项目可能是一个学生在毕业设计阶段完成的作品,旨在综合运用所学的Java Web开发知识,提升实际项目开发能力。通常,这样的项目会涵盖基本的CRUD(创建、读取、更新、删除)操作,用户注册与登录,...
- JPA/Hibernate:理解ORM框架的工作原理,以及实体关系映射和查询语句的编写。 10. **心理辅导**: - 面试准备:了解如何有效地准备面试,包括对公司和职位的研究,以及自我介绍的技巧。 - 面试技巧:学会如何...
知识点3:Java 语言 * Java 是一种面向对象的编程语言,能够在多种平台上运行。 * Java 是一种静态类型语言,具有强类型检查和垃圾回收机制。 * Java 的主要特点是平台独立、对象oriented 和大型商业应用友好。 ...
3. **JavaWeb阶段** - **JavaScript DOM编程视频教程**:JavaScript是前端开发的核心语言之一,DOM编程是其中的重要组成部分。 - **jQuery视频教程**:jQuery是一种流行的JavaScript库,简化了HTML文档遍历、事件...
例如,前端可能使用了Thymeleaf或JSP模板引擎,后端则可能利用了MyBatis或Hibernate进行数据访问。 5. **辅导视频**:"5-视频"是辅助学习资源,通常由专业讲师讲解,涵盖项目搭建、关键功能实现、问题排查等,有助...
根据给定的文件信息,我们可以提炼出一系列与Java程序设计相关的知识点,这48讲加上额外的2讲辅导课程,涵盖了Java编程的基础到高级技术,是深入理解和掌握Java语言的宝贵资源。以下是对这些知识点的详细说明: ###...
“3-资料”可能包含相关的学习资料,例如Java编程基础、Spring Boot教程、数据库管理知识等,帮助用户深入理解系统原理,提升开发技能。 六、辅导视频 “5-视频”中的辅导视频是系统的重要补充,通过实例演示,...
5. **框架知识**:如果你有使用MVC框架(如Spring MVC)、持久层框架(如Hibernate)或前端框架(如Angular、React)的经验,应明确指出并简述应用情况。 6. **数据库技能**:展示你的SQL知识,包括查询优化、事务...
8. **辅导视频**:01-视频可能是一系列的教学视频,帮助学习者理解系统的实现过程,包括编程技巧、问题调试、功能测试等内容,有助于深化理论知识和实践能力。 9. **版本控制**:项目可能使用Git进行版本控制,确保...
最后,"资料"(3-资料)可能是额外的学习资源,如Java编程指南、数据库管理教程、软件工程理论等,这些都能帮助学习者更全面地掌握相关知识。 综上所述,这个基于Java的人力资源管理系统项目不仅提供了实践经验,也...
- 数据库:MySQL或Oracle存储用户信息、作业、成绩等数据,使用JDBC进行数据库操作,可能结合Hibernate或MyBatis简化ORM(对象关系映射)。 - 前端:HTML、CSS和JavaScript,可能使用Bootstrap或Vue.js等框架提升...
这个项目的重点在于理解和应用Java编程语言来构建一个实用的业务系统,同时也涉及到数据库管理和系统部署的相关知识。 1. **Java编程基础**:Java是一种面向对象的编程语言,它的特性包括平台独立性、丰富的类库和...
例如,可能会使用Java Swing或JavaFX构建用户界面,Spring框架处理业务逻辑,而Hibernate或JDBC则用于与数据库进行交互。 数据库是教务查询系统的核心,它存储了所有的教务数据,如学生信息、课程信息、成绩等。2-...
3. **数据库管理**:项目中可能使用了MySQL或Oracle等关系型数据库存储敬老院的数据,如老人信息、员工资料、费用记录等。SQL语言用于数据的增删改查,数据库设计时需考虑数据的一致性、完整性和安全性。 4. **JDBC...
3. **Hibernate框架**:Hibernate是一个对象关系映射(ORM)工具,简化了数据库操作。在本项目中,Hibernate用于将Java对象与数据库表进行映射,通过对象的方式来操作数据库,减少了SQL的编写,提高了开发效率。 4....