实体层次设计
来源:互联网 发布:平面图转换立体图软件 编辑:程序博客网 时间:2024/05/14 06:42
Hibernate 中支持3中类型的继承方式:
下面需要用到类:
public TItem{ public Integer id; public String manufacturer; public String name;}public TBook extends TItem{ public String pageCount;}public TDVD extends TDVD{ public Integer regionCode;}
1.表和子类之间的独立的一对一关系。 为每一个子类都建立一个表,同时建立对用的hbm.xml文件,上面的类而言,继承的作用不过是增加了几个共同的字段而已;2.Table per subclass 数据库中维护三个表;分别为T_ITEM,T_BOOK,T_DVD;对于每一个表只有自己的属性,两个字表通过主键/外键与父表相连。这样值需要写父类的hbm.xml映射文件即可如下: TItem.hbm.xml
<hibernate-mapping> <class name="com.redsage.entity.TItem" table="T_ITEM"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name" type="string"/> <property name="manufacturer" column="manufacturer" type="string"> <joined-subclass name="TDVD" table="T_DVD"> <key column="id"/> <property name="regionCode" column="regioncode"/> </join-subclass> <joined-subclass name="TBook " table="T_BOOK"> <key column="id"/> <property name="pageCount" column="pageCount"/> <joined-subclass> </class></hibernate-mapping>
下面为测试用例
TBook book = new TBook();book.setPageCount(288);book.setName("NO excuse");book.setMnaufacturer("Wiley");TDVD dvd= new TDVD ();book.setRegionCode("6");book.setName("Spider Man");book.setMnaufacturer("Colonbia");try{ Transaction ts = session.openTransaction(); ts.save(book); ts.save(dvd); ts.commit()}catch(HibernateException e){ e.printStackTrace();}//查询语句List list = session.createQuery("from TItem").list();Iterator it = list.iterator();while(it.hasNext()){ TItem item = (TItem)it.next(); System.out.pritln(item.getName());}
3 Table per class hierarchy
在一个表中同时保存子类新增的属性,并新增一个字段(category)表示这条语句是DVD 的还是BOOK 的;表中的字段如下图:
如何把一个表中不中不同的数据映射到不同的子类中,需要如下的映射文件
TItem.hbm.xml:
<hibernate-mapping> <class name="com.thq.tt.TItem" table="T_ITEM"> <id name ="id" column="id"> <generator class="native"/> </id> **<discriminator column="category" type="string"/>** <property name="manufacturer" ..> <..name> <subclass name="com.thh.t.TBook" discriminator-value="1"> <property name="pageCount" column="pageCount"> </subclass> <subclass name="com.thh.t.TDVD" discriminator-value="2"> <property name="regionCode" column="regionCode"> </subclass> </class></hibernate-mapping>
阅读全文
0 0
- 实体层次设计
- 实体层次设计
- Hibernate实体层次设计(一)
- Hibernate实体层次设计(二)
- Hibernate实体层次设计(三)
- Hibernate实体层次设计(四)
- JPA中的实体层次设计
- JPA中的实体层次设计
- hibernate实体层次设计之三种类型的继承形式(一)
- hibernate实体层次设计之三种类型的继承形式(二)
- hibernate实体层次设计之三种类型的继承形式(三)
- 层次化网络设计
- 实体类的设计
- hibernate实体层设计
- 浅谈实体类设计
- 实体设计-何时需要新的实体?
- 信息管理系统的层次设计
- 信息管理系统的层次设计
- 矩阵键盘扫描程序实例
- 数据结构实验之栈四:括号匹配
- git总结
- Shader 学习笔记(一) 渲染流水线
- visual studio 2013许可验证码
- 实体层次设计
- 卷积神经网络工作原理研究
- 字符串--java面试题, 首个重复字符串,二分查找
- TensorFlow 插曲-- tf.placeholder 与 tf.Variable
- Java基础笔记整理---【05】switch分支语句、for循环语句
- scrapy遇到的坑
- JavaScript-内存空间
- ITSOM企业级应用SaaS平台——基础信息管理
- 直通BAT--数据结构与算法十(排列组合)