Hibernate 继承关系映射
创始人
2024-11-13 07:37:20
0

hibernate对类的继承关系的三种策略。以动物(Animal、Pig、Bird)为例

一、所有类的属性(字段)放入在一张表中

特点,数据库查询效率高,但粒度比较粗,会有冗余字段,配置特点是在配置文件中添加了discriminator-value标签属性。

java类
 

package test.hibernate.spring.model;  public class Animal { 	private int id; 	private String name; 	private String sex; 	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 String getSex() { 		return sex; 	} 	public void setSex(String sex) { 		this.sex = sex; 	} 	public Animal() { 		super(); 	} 	@Override 	public String toString() { 		return "Animal [id=" + id + ", name=" + name + ", sex=" + sex + "]"; 	} 	  }
package test.hibernate.spring.model;  public class Bird extends Animal { 	private int height;  	public int getHeight() { 		return height; 	}  	public void setHeight(int height) { 		this.height = height; 	}  	public Bird() { 		super(); 	}  	@Override 	public String toString() { 		return "Bird [height=" + height + "]"; 	} 	  }
package test.hibernate.spring.model;  public class Pig extends Animal { 	private int weight;  	public int getWeight() { 		return weight; 	}  	public void setWeight(int weight) { 		this.weight = weight; 	}  	public Pig() { 		super(); 	}  	@Override 	public String toString() { 		return "Pig [weight=" + weight + "]"; 	} 	 	  }

配置文件

                                                                                                                                                                                                       

测试

package test.hibernate.spring;  import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.MetadataSources; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.junit.After; import org.junit.Before; import org.junit.Test;  import test.hibernate.spring.model.Bird; import test.hibernate.spring.model.Pig;  public class TestSession { 	SessionFactory sessionFactory = null; 	Session session=null; 	Transaction ts=null; 	@Before 	public void beforP() { 		System.out.println("begin...."); 		/* hibernate规定,所有的配置或服务,必须配置或注册到一个服务注册类中 */ 		  Configuration configuration = new Configuration().configure(); 		  ServiceRegistry sr=configuration.getStandardServiceRegistryBuilder().build(); 		/* 从注册类中获得工厂类 */ 		  sessionFactory=new MetadataSources(sr).buildMetadata().buildSessionFactory(); 		/* 通过工厂类开启Session */ 		  session=sessionFactory.openSession(); 			/* 开启事务 */ 		  ts=session.beginTransaction(); 					} 	@After 	public void endP() { 		System.out.println("end...."); 		/* 提交事务 */ 		ts.commit(); 		/* 关闭Session */ 		session.close(); 		/* 关闭工厂 */ 		sessionFactory.close(); 		} 	@Test 	public void add() { 		Pig p=new Pig(); 		p.setName("ls"); 		p.setSex("公"); 		p.setWeight(300); 		 		Bird b=new Bird(); 		b.setName("zs"); 		b.setSex("母"); 		b.setHeight(500); 		session.save(b); 		 	} }

二、每个类一张表,用joined-subclass标签来配置,java类没有变化。

配置

   	 		 			 			 		 		 			 		 		 			 		 		 		 			 			 		 		 			 			 		 	  

测试

与第一种相同
 

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...