Hibernate 之单表继承映射策略
来源:互联网 发布:ubuntu取消挂载命令 编辑:程序博客网 时间:2024/03/29 18:31
1、知识点:
继承实现的三种策略:
一、单表继承:每棵类继承树使用一个表(table per class hierarchy)
重点关注这个:原因,常用;便于查询,性能好。
二、具体表继承
三、类表继承
2、单表继承:
动物、狗、猪
示例代码如下:
public class Animal {private int id;private String name;
public class Dog extends Animal {private Integer height;
public class Pig extends Animal {private Integer weight;
映射文件:
注意:discriminator 不能缺省,必须有,而且放在id和下一个属性中间。默认类型是string类型
<hibernate-mapping><class name="com.shangxuetang.Animal" table="t_animal" discriminator-value="animal"><id name="id"><generator class="native"/></id> <discriminator column="animaltype"></discriminator><property name="name"></property><subclass name="com.shangxuetang.Dog" discriminator-value="dog"> <property name="height"></property></subclass><subclass name="com.shangxuetang.Pig" discriminator-value="pig"> <property name="weight"></property></subclass></class></hibernate-mapping>
测试代码:
public void testOneTable() {Session session = HibernateUtil.getSession();try {session.beginTransaction();Animal a = new Animal();a.setName("X");session.save(a);Dog d = new Dog();d.setName("gou");session.save(d);Pig p = new Pig();p.setName("zhu");session.save(p);session.getTransaction().commit();}catch(Exception e) {e.printStackTrace();session.getTransaction().rollback();}finally {session.close();}}
执行之后表内容如下:
3、单表继承查询:
public void testOneTable() {Session session = HibernateUtil.getSession();try {session.beginTransaction();Animal a = (Animal)session.get(Animal.class, 1);//语句1Animal b = (Animal)session.get(Animal.class, 2);//语句2Animal c = (Animal)session.get(Animal.class, 3);//语句3System.out.println(a.getName());System.out.println(b.getName());System.out.println(c.getName());session.getTransaction().commit();}catch(Exception e) {e.printStackTrace();session.getTransaction().rollback();}finally {session.close();}}
语句2如果换成如下:就会报类型转换异常,因为load是加载的一个代理对象。get是没问题的。
Dog b = (Dog)session.load(Animal.class, 2);//语句2
- Hibernate 之单表继承映射策略
- hibernate单表之组件映射和继承映射
- 【Hibernate集锦】---继承映射之单表继承
- hibernate单表继承映射
- hibernate单表继承映射
- hibernate继承映射策略之每个具体类一张表
- hibernate继承映射策略之每个子类一张表
- Hibernate继承映射策略
- HIbernate继承映射策略
- Hibernate映射类继承之混合继承策略
- 解读Hibernate继承映射策略
- 解读Hibernate继承映射策略
- Hibernate 之单表映射
- Hibernate 的两种继承映射关系,单表映射
- Hibernate之继承映射
- Hibernate之继承映射
- Hibernate之继承映射
- Hibernate之 继承映射
- wxWidget的fileDialog, dirDialog
- 使用GDAL打开裸数据(RAW)
- java选择排序和二分查找
- 《程序员思维修炼》读书笔记
- 2012-07-16-2
- Hibernate 之单表继承映射策略
- 服务器的备份
- Android开机动画bootanimation.zip
- 折半插入排序
- 20120716又去健身房
- JSP脚本和JSTL的交互
- 程序员求职之道(《程序员面试笔试宝典》)之程序设计基础(static的使用)?
- Tomcat无法访问问题
- 人脸区域定位