- 浏览: 253938 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
B/S结构下套打票据实现 - Lodop打印组件 -
iTarget:
原原文::http://blog.csdn.net/steve ...
加减乘除的问题 - BigDecimal -
iTarget:
原文:http://blog.csdn.net/gqm1982 ...
加减乘除的问题 - BigDecimal -
iTarget:
在Java中,要想实现精确计算,解决方案是使用BigDecim ...
加减乘除的问题 - BigDecimal -
叶寒_:
...
JSP简单标签
<!-- [if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if !mso]> <span class="mceItemObject" classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui> </span> <style> st1\:*{behavior:url(#ieooui) } </style> <![endif]--> <!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->
<!-- [if !supportLists]-->节 1.01 <!-- [endif]-->每个带有联合的具体类一张表 – union-class
<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1026" type="#_x0000_t75" style="width:401.25pt; height:129pt" mce_style="width:401.25pt; height:129pt"> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\03\clip_image001.png" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\03\clip_image001.png" o:title="3"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
<!-- 注:抽象的超类或者接口必须声明为 abstract ,否则超类实例需要一张单独表 -->
< class name = "hibernate.hierarchical.BillingDetails" abstract = "true" >
< union-subclass name = "hibernate.hierarchical.CreditCard" table = "CREDIT_CARD" >
< property name = "number" column = "NUMBER" />
< property name = "expMonth" column = "EXP_MONTH" />
< property name = "expYear" column = "EXP_YEAR" />
</ union-subclass >
< union-subclass name = "hibernate.hierarchical.BankAccount" table = "BANK_ACCOUNT" >
< property name = "account" column = "ACCOUNT" />
< property name = "bankname" column = "BANKNAME" />
< property name = "swift" column = "SWIFT" />
</ union-subclass >
</ class >
public class BillingDetails { private Long id ; private String owner ;}
public class BankAccount extends BillingDetails {
private String account ; private String bankname ; private String swift ;}
public class CreditCard extends BillingDetails {
private String number ; private String expMonth ; private String expYear ;}
查询 BillingDetails 时生成的 SQL 如下:
Select BILLING_DETAIL_ID,OWNER… FROM
(
Select BILLING_DETAIL_ID_OWNER,NUMBER,EXP_MONTH,EXMP_YEAR,null as ACCOUNT,null AS BANKNAME,null as SWIFT 1 as CLAZZ_
FROM CREDIT_CARD
UNION
Select BILLING_DETAIL_ID_OWNER,null as NUMBER,null as EXP_MONTH,null as EXP_YEAR,ACCOUNT,BANKNAME,SWIFT,2 as CLAZZ_
FROM BANK_ACCOUNT
)
这样使用的效率最高
<!-- [if !supportLists]-->节 1.02 <!-- [endif]-->每个类层次结构一张表 – SubClass
<!-- [if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style="width:248.25pt;height:177.75pt" mce_style="width:248.25pt;height:177.75pt"> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\03\clip_image003.png" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\03\clip_image003.png" o:title="2"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
注:
<!-- [if !supportLists]-->1、 <!-- [endif]-->在表设计时添加辨别标志 (BILLING_DETAILS_TYPE) 用于在持久化类之间区分不同对象。
<!-- [if !supportLists]-->2、 <!-- [endif]-->在列名称设计上需要加前缀(比如 CC/BA )等,用于让 Hibernate 自动识别不同对象。
< class name = "hibernate.hierarchical.BillingDetails" table = "Billing_Details" >
< property name = "owner" column = "OWNER" type = "string" />
<!-- 添加一个辨别标志以便在持久化类之间进行区分 -->
< discriminator column = "BILLING_DETAILS_TYPE" type = "string" />
< subclass name = "hibernate.hierarchical.CreditCard" discriminator-value = "CC" >
< property name = "number" column = "CC_NUMBER" />
< property name = "expMonth" column = "CC_EXP_MONTH" />
< property name = "expYear" column = "CC_EXP_YEAR" />
</ subclass >
< subclass name = "hibernate.hierarchical.BankAccount" discriminator-value = "BA" >
< property name = "account" column = "BA_ACCOUNT" />
< property name = "bankname" column = "BA_BANKNAME" />
< property name = "swift" column = "BA_SWIFT" />
</ subclass >
</ class >
public class BillingDetails { private Long id ; private String owner ;}
public class BankAccount extends BillingDetails {
private String account ; private String bankname ; private String swift ;}
public class CreditCard extends BillingDetails {
private String number ; private String expMonth ; private String expYear ;}
当查询父表 BillingDetails 时将 BILLING_DETAILS 表字段全部查询。
Select BILLING_DETAILS_ID,CC_NUMBER,CC_EXP_MONTH… FROM BILLING_DETAILS
当查询子表 BankAccount/CreditCard 表时通过标识字段进行限制。
Select BILLING_DETAILS_ID,CC_NUMBER,CC_EXP_MONTH FROM BILLING_DETAILS WHERE BILLING_DETAILS_TYPE=’CC’
注:当类继承关系比较多时,存在性能问题
<!-- [if !supportLists]-->节 1.03 <!-- [endif]-->每个子类一个表 – JoinSubClass
将一个表示逻辑的大表拆分成多个子表,每个子表通过主键 / 外键的关系同父表进行关联,从而形成继承关系。每个子表的主键同时时父表的外键
<!-- [if gte vml 1]><v:shape id="_x0000_i1025" type="#_x0000_t75" style="width:414.75pt;height:258pt" mce_style="width:414.75pt;height:258pt"> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\03\clip_image005.png" mce_src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\03\clip_image005.png" o:title="1"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->
< class name = "hibernate.hierarchical.BillingDetails" table = "BillingDetails" >
< joined-subclass name = "hibernate.hierarchical.CreditCard" table = "CREDIT_CARD" >
<!-- 通过 key 指定的字段将父表和子表关联。 CREDIT_CARD_ID 即使子表的主键同时也是父表的外键 -->
< key column = "CREDIT_CARD_ID" />
< property name = "number" column = "NUMBER" />
< property name = "expMonth" column = "EXP_MONTH" />
< property name = "expYear" column = "EXP_YEAR" />
</ joined-subclass >
< joined-subclass name = "hibernate.hierarchical.BankAccount" table = "BANK_ACCOUNT" >
< key column = "BANK_ACCOUNT_ID" />
<
发表评论
-
HIbernate 缓存
2009-04-02 16:48 1472节 13.01 缓存类型 1、 事务范围缓存:添 ... -
Hibernate QBC语言
2009-03-27 15:14 4866节 8.01 基本查询 以 ... -
Hibernate HQL语言
2009-03-26 16:01 8421HQL查询 节 10.01 单表HQL查询 FROM C ... -
Hibernate 查询策略
2009-03-26 13:33 3496第 I 条 -
HIbernate 大批量数据处理
2009-03-25 17:11 2856节 1.01 -
Hibernate乐观锁控制
2009-03-24 17:00 11191、 -
Hibernate控制事务并发访问
2009-03-24 16:28 1602(a) -
Hibernate的Java SE事务
2009-03-24 15:26 11051、在Hibernate的配置文件中添加以下内容: < ... -
Hibernate 一对一延迟加载
2009-03-24 14:38 1745当主外键为同一字段时可以使用一对一的延迟加载 ... -
Hibernate的集合映射
2009-03-23 17:13 1084... -
Hibernate持久化上下文
2009-03-23 17:10 1267持久化上下文作用 : -
Hibernate托管对象
2009-03-23 16:41 30811、 -
Hibernate 一对多关联
2007-08-14 14:44 1177java 代码 CREATE TABLE PERS ... -
HibernateSessionFactory 工具类
2007-07-31 17:37 6913java 代码 public class ... -
Hibernate 多对多关联
2007-07-31 17:36 1490xml 代码 CREATE TABLE GROUP ... -
Hibernate 一对一关联
2007-07-31 17:34 1128xml 代码 CREATE TABLE CUST ... -
Hibernate 一对一关联 (多对一的曲线实现)
2007-07-31 17:32 1618xml 代码 CREATE TABLE AUTHO ... -
Hibernate 多对一关联
2007-07-31 17:30 1254xml 代码 CREATE TABLE CUST ...
相关推荐
**Hibernate继承策略** 在 Hibernate 中,为了处理对象模型中的继承关系,提供了以下几种继承策略: 1. **单表继承(Single Table Inheritance)**:所有子类共享同一张数据库表,使用一个标识字段来区分不同的...
### Hibernate继承策略 Hibernate支持多种继承映射策略,包括: 1. **单表继承(Single Table Inheritance)**:所有的子类信息存储在同一个表中,通过一个特定的字段来区分不同的子类。 2. **类表继承(Class ...
Hibernate提供了四种继承策略:单表继承(Single Table Inheritance)、联合继承( Joined Table Inheritance)、表 per 类继承(Table per Class Inheritance)以及分层继承(Concrete Table Inheritance)。...
本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承策略。 ### 单一表继承策略 在单一表继承策略中,所有类层次结构中的实例都存储在同一张数据库表中。这种策略通过在表中...
以下是对"jpa/hibernate继承注解"这一主题的详细说明。 1. **单一表继承(Single Table Inheritance, STI)** 单一表继承是最简单的继承策略,所有的子类信息都存储在一个数据库表中。使用`@Inheritance(strategy ...
Hibernate支持多种继承策略,包括单一表继承(Single Table Inheritance)、联合表继承( Joined Table Inheritance)和表-per类继承(Table per Class Inheritance)。每种策略都有其特定的适用场景和优缺点,下面...
《Hibernate继承映射详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。在实际项目中,我们常常会遇到类的继承关系,而Hibernate提供了强大的支持来处理这种继承关系的...
本篇文章将详细探讨Hibernate继承映射的策略,特别是“每个具体类一张表”(Table Per Concrete Class)的映射方式。 在面向对象编程中,继承是常见的代码复用手段,但在关系型数据库中,这种概念并不直接对应。...
标题:“Hibernate继承关系映射.pdf” 描述:“简明扼要地介绍了Hibernate中继承关系的映射方式,深入探讨了三种不同的映射策略及其优缺点,同时解析了多态查询的概念。” 知识点: ### Hibernate继承关系映射...
本文将详细探讨“Hibernate继承映射的第一种策略:每个类对应一张表”的概念、实现方式以及其优缺点。 首先,我们需要理解Hibernate继承映射的基本策略。在面向对象编程中,类继承是常见的代码复用手段,但在数据库...
《Hibernate继承映射详解》 在Java开发中,对象关系映射(ORM)框架如...根据项目需求选择合适的继承策略,可以优化数据存储,提升系统性能。同时,结合源码学习,能更深入地理解其工作原理,为实际开发提供强大支持。
这种方式也被称为单表继承或多表继承,是Hibernate支持的四种继承映射策略之一。了解并熟练掌握这种映射模式对于提升Java开发效率和代码维护性至关重要。 在传统的面向对象编程中,类可以有继承关系,但在关系...
在Hibernate中配置类继承关系,我们需要在实体类上使用`@Inheritance`注解,并指定继承策略。例如,使用单表继承: ```java @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn...
hibernate继承策略总共有三种,一种是共用一张表;一种是每个类一张表,表里面储存子类的信息和父类的信息;还有一种是通过表连接的方式,每个类都有一张表,但是子类对应的表只保存自己的信息,父类对应的表保存...