用hibernate实现java的类继承-每个类一个表
来源:互联网 发布:家用太阳能系统 知乎 编辑:程序博客网 时间:2024/06/06 10:03
在Hibernate中,有三种方式实现java中的继承,本文讲一个方法:每个类一张表。
java是面向对象的编程语言。 继承是其中重要的概念。关系模型能实现“是一个”和“有一个"关系。Hibernate给我们提供了类继承的方法。
比如我们有下面的类:shape是基类,circle和rectangle继承了shape.我们将为这3个类生成3张表。
三个类:
三张表:
package org.arpit.javapostsforlearning;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Inheritance;import javax.persistence.InheritanceType;import javax.persistence.Table;@Entity@Table(name="SHAPE")@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)public class Shape { @Id @GeneratedValue(strategy = GenerationType.TABLE) @Column(name="Shape_Id") int shapeId; @Column(name="Shape_Name") String shapeName; public Shape() { } public Shape(String shapeName) { this.shapeName=shapeName; } //getters and setters }为在hibernate中实现继承,要用@Inheritance.它为实现实体类的层次结构,它定义了继承策略。我们在此使用的是Table_Per_Class继承策略。
package org.arpit.javapostsforlearning;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Table;@Entity@Table(name="RECTANGLE")public class Rectangle extends Shape{ @Column(name="Rectangle_Length") int length; @Column(name="Rectangle_Breadth") int breadth; // getters and setters public Rectangle() { } public Rectangle(String shapeName,int length,int breadth) { super(shapeName); this.length=length; this.breadth=breadth; } // getters and setters}
package org.arpit.javapostsforlearning;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Table;@Entity@Table(name="CIRCLE")public class Circle extends Shape{ @Column(name="Circle_Radius") int radius; public Circle() { } public Circle(String shapeName,int radius) { super(shapeName); this.radius=radius; } // getters and setters}
package org.arpit.javapostsforlearning;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;public class HibernateMain { public static void main(String[] args) { Shape shape=new Shape("Sqaure"); Rectangle rectangle=new Rectangle("Rectangle", 10, 20); Circle circle=new Circle("Circle", 4); Configuration configuration=new Configuration(); configuration.configure(); ServiceRegistry sr= new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); SessionFactory sf=configuration.buildSessionFactory(sr); Session ss=sf.openSession(); ss.beginTransaction(); ss.save(shape); ss.save(rectangle); ss.save(circle); ss.getTransaction().commit(); ss.close(); }}
原文:http://javapostsforlearning.blogspot.in/2013/02/hibernate-inheritancetable-per-concrete.html
源代码:http://pan.baidu.com/share/link?shareid=3213551302&uk=3878681452
洋县白云宾馆
另见生成一张表:http://188029.net/hibernate/hib.html
- 用hibernate实现java的类继承-每个类一个表
- Hibernate继承映射--每个类一个数据表的实现案例
- Hibernate继承映射--每个子类一个数据表的实现案例
- hibernate将每个类映射成表的继承
- Hibernate 继承关系映射——每个类一个数据表
- Hibernate映射类继承之每个类一张表(父子类都有各自的表,并共用一个映射文件)
- Hibernate映射类继承之每个带有联合的具体类一张表(每个子类各一张表,共用一个父类映射文件)
- 011——hibernate类表继承:每个具体类一个表
- Hibernate 继承映射实现方式之每个具体类对应一张表
- Hibernate 继承映射实现方式之每个具体类对应一张表
- Hibernate系列之继承关系:每个类一张表
- Hibernate继承映射之每个类一张表
- Hibernate继承映射之每个具体类一张表
- hibernate继承结构中每个类一张表
- hibernate继承映射策略之每个具体类一张表
- Hibernate/JPA中的继承映射 实体extends的关系(每个子类独立一个表)
- Hibernate/JPA中的继承映射 实体extends的关系(每个子类独立一个表)
- Hibernate映射类继承之每个类层次结构一张表(父子类共用一张表,一个映射文件)
- JDBC连接Oracle数据库详解
- Hibernate多对多
- JSoup 获取正文,自动识别页面编码Charset
- 01-ubuntu镜像下载地址
- 8.7 - The hidden “this” pointer
- 用hibernate实现java的类继承-每个类一个表
- [Leetcode] Search a 2-D matrix
- 03-com/sun/mail/util/LineInputStream
- cmd下执行java class
- Search in Rotated Sorted Array II
- Remove Duplicates from Sorted List I
- IEEE 802.15.4为什么是一个低功耗协议(原创)
- 在CentOS上安装Git
- CentOS系统时区、日期和时间