`

Hibernate 面向性能的设计(原创)

阅读更多
针对每个实体所涉及到的具体属性不同的特点,比如一个商品类中,书本有页数属性,DVD有区码属性,如果针对不同的对象建一张独立的表
不行。可以把不同对象相同的地方归类到一个公共类,然后用Table per subclass来处理,具体如下
针对不同对象不同属性先分别建不同对象特有属性的子表,字段只是特有属性就OK
然后在公共类的映射文件中用<joined-subclass
               name="子类具体路径"
                table="对应子表">
                 <key column="id"/>

                  <property name="pageCount"
                    column="pagecount">
           </joined-subclass>

然后写如下测试代码:
TBook book=new TBook();
book.setpagecount(23);
book.setName("NO excuse");
TDvd dvd=new TDvd();
dve.setName(spain man );
dve.setRegioncode(6);

try{

Transaction tx=session.beginTransaction();
session.save(book);
session.save(dvd);
tx.commit();

}
catch(HibarnateException e)

{
......
}


不过有一种更好的区别子类的方法
在主表中增加一个Category字段用来标示字类,
假如category=1表示的是书
category=2表示的DVD
那么在Hibernate 映射文件中的discriminator节点,则可以定义根据category自动识别对应的class类型的功能。
注意。是自动的,以下代码你就知道了。
在TItem.hbm.xml
<hibernate-mapping>
<class name="item类的具体路径 table="T_ITEM">
<id name="id" column="id">
<generator class="native"/>
</id>
<discriminator column="category" type="string"/ >
<property name="name" column="name">
<property 其他公共部分的属性>
<subclass name="字类的具体路径(注意是个真实的类)" discriminator-value="1">
<property name="pageCount" column="pagecount"/><!--对应的字类特殊字段,也就是说这个是我字类特有的属性了-->
</subclass>
<subclass name="字类的具体路径" discriminator-value="2">
<property name="Code" column="code"/>
</subclass>


</hibernate-mapping>
这样,在运行Hibernate读取T_ITEM表数据时,会根据指定的category来进行判断,如果category字段值为1,则映射到
TBook。如果是2则把数据映射到TDVD生成实例对象。
然后看下测试类

List list =session.createQuery("from TBook").list();
Iterator it=list.iterator();
while(it.hasNext())
{
TBook book=(TBook)it.next();
System.out.println(book.getName());

}
输出来的真的是book里面的Name哦。。。这种方法近似于父类和其子类映射的解决之道,既一个大类对应有一个大表
,大表有些属性是字类特有的,通过category来识别加载子类。


分享到:
评论

相关推荐

    [Hibernate雨夜的寂寞原创教程].Hibernate

    【Hibernate雨夜的寂寞原创教程】是一份专为初学者设计的教程,旨在帮助学习者掌握Hibernate这一强大的Java对象关系映射(ORM)框架。Hibernate是Java开发中的一个热门工具,它极大地简化了数据库操作,使得开发者...

    hibernate 重点知识原创

    此外,Hibernate 还提供了二级缓存,它是一个跨 Session 的区域,可以提高数据读取性能。 五、session 操作数据 通过 Session,开发者可以执行 CRUD(创建、读取、更新和删除)操作。例如,使用 `save()` 或 `...

    hibernate映射心得 原创

    Hibernate是一个流行的Java ORM框架,它允许开发者用面向对象的方式来操作数据库,而无需编写大量的SQL语句。映射是Hibernate的核心功能,它涉及到如何将Java类和数据库表之间建立对应关系,包括实体类、属性与...

    Hibernate 3.2.0 中文官方文档

    5. **查询语言(HQL)**:Hibernate查询语言是一种面向对象的查询语言,类似于SQL但操作对象而非记录。学习HQL的基本语法,如SELECT, FROM, WHERE子句,以及JOIN, GROUP BY, ORDER BY等。 6. **Criteria查询**:另...

    Hibernate+Spring+DWR分页(原创)

    Hibernate作为Java领域广泛使用的对象关系映射(ORM)框架,使得开发者能够用面向对象的方式处理数据库操作。在分页场景中,Hibernate提供了Query和Criteria API,可以方便地进行分页查询。例如,我们可以使用HQL...

    基于jsp+ssh的时装原创设计交流网源码数据库论文.doc

    【时装原创设计交流网站概述】 时装原创设计交流网站是一个基于JSP+SSH技术构建的在线平台,旨在保护和促进时装领域的原创设计。该网站致力于为设计师提供一个展示创意、交流设计理念的场所,同时也为消费者提供...

    毕业设计 原创 基于web的网上书店管理系统

    本毕业设计项目是原创的“基于Web的网上书店管理系统”,采用主流的SSH(Struts2、Hibernate、Spring)框架进行开发,为学生提供了一个完整的网上购书平台的参考实例。SSH框架是Java Web开发中广泛使用的三大框架...

    【原創】Spring、Hibernate、Struts1整合的方式

    这篇原创博客探讨了如何将这三个框架有效地结合在一起,以实现更高效、更模块化的应用程序开发。 首先,Spring框架是Java的核心组件,它提供了依赖注入(DI)和面向切面编程(AOP)的功能,使得代码更加灵活和可...

    Struts2Hibernate3.2Spring2.0

    在这个实例中,"浪曦原创"浪曦OA与工作流系统 第3讲 Struts2+Hibernate3.2+Spring2.0整合续二(风中叶).exe很可能是教学视频或演示程序,帮助学习者理解如何将这三个框架整合到一起。教程可能涵盖了如何配置Struts2的...

    时装原创设计交流网ssh+mysql源码&java毕业设计(完整前后端+数据库+说明文档+LW).zip

    这是一个基于Java技术栈的时装原创设计交流网络平台的毕业设计项目。该项目采用了SSH(Spring、Struts2、Hibernate)框架,结合MySQL数据库进行数据存储,实现了完整的前后端功能,包括用户交互、数据处理和界面展示...

    struts2.1.8+Hibernate3.3+spring2.5.6+extjs3.2+jbpm4.1版图书管理系统(原创)

    Hibernate3.3增加了对JPA(Java Persistence API)的支持,提高了性能和易用性。 Spring2.5.6是核心的依赖注入(Dependency Injection)和面向切面编程(AOP)框架。它为整个系统提供了统一的配置和管理方式,使各...

    基于JavaWeb的在线图书商城设计与实现.docx

    该论文旨在为专科和本科毕业生提供一个原创的研究成果,已经过查重处理,篇幅超过万字,涵盖了从系统设计到实现的全过程。 第一章绪论部分阐述了研究的背景和意义。随着互联网技术的快速发展,电子商务已成为日常...

    jsp143时装原创设计交流网ssh+mysql.zip

    这些项目都使用了SSH(Spring + Struts + Hibernate)框架,这是一个流行的Java开发框架,它简化了开发过程并提高了系统的性能和可维护性。 通过这些项目的实施,用户可以获得一个完整、稳定的系统,实现各种管理和...

    电子商务网站毕业设计论文,ppt等

    这包括了解ER模型,进行关系数据库设计,创建合适的数据表,以及优化查询性能。 5. **安全性考虑**:在电子商务网站中,用户隐私和交易安全是关键。开发者需要了解如何防止SQL注入、XSS攻击,以及采用HTTPS等加密...

    本科毕业论文-—基于java技术的网上招聘系统的设计与实现.doc

    9. **原创性声明**:作者声明论文是其原创工作,不包含已发表或他人的研究成果,且已对提供帮助的人员表示感谢,这是学术诚信的重要体现。 10. **版权授权**:作者同意学校对论文的使用权,包括保存、复制、公开等...

    基于java技术的网上交易系统的开发毕业论文设计.doc

    本文档的结构主要包括原创性声明、授权使用说明、注意事项、设计(论文)内容要求、附件要求、文字图表规范以及装订顺序等部分。 论文的核心在于基于Java的网上交易系统的设计与实现,采用J2EE(Java 2 Platform, ...

    美河原创作品]J2EE系列讲座

    "J2EE"标签则直接指向了Java企业版平台,这是一个用于构建可扩展、高性能、分布式应用程序的标准,包括Servlet、JSP、EJB(Enterprise JavaBeans)、JMS(Java消息服务)等组件。 【压缩包子文件的文件名称列表】...

    asp.net版的ORM框架(原创)

    在这个原创框架中,作者模仿了Hibernate的设计思想,旨在简化.NET开发中的数据访问层工作,特别是对于三层架构的应用程序,这种框架尤其有用。 ORM框架的核心作用是通过映射对象和数据库表之间的关系,使得对象可以...

    基于Struts2在线交易系统的设计与实现毕业设计_说明.doc

    Hibernate框架则被用于处理数据库操作,它提供了对象关系映射(ORM)功能,使得开发者能够以面向对象的方式操作数据库,降低了数据库操作的复杂性。 在系统设计阶段,我们进行了整体布局,逻辑框架和数据流程的规划...

Global site tag (gtag.js) - Google Analytics