`
zengbo0710
  • 浏览: 414968 次
社区版块
存档分类
最新评论

SSH系列(三)--Hibernate进阶

阅读更多
在上篇系列中我简要的谈到了一下Hibernate的基本的实用方法,在这里我觉得对于一个技术(不论是开源项目或是行业中的某种标准技术)我们的认知是可以分为四个层次:

      第一个层次是“知道,了解”,它的要求仅仅是我们听说过这个技术,知道它是干什么的或是看过几篇文章,可以跟人简单的侃一侃;第二个层次是“会用”,就是 能够就这个技术熟练的写出"hello world",掌握了其基本的用法,能够在实际项目中使用;第三个层次是“精通”,就是对于这个技术很熟练了,知道其内部原理和优化使用,能够解决在实际 项目中使用这种技术遇到的一些“灵异问题”,算是使用这个技术的大哪了;第四个层次是“融会贯通,创新”,即不但能熟练的使用这个技术,并且能理解这个技 术的优势或新异的本质,能够将这个本质应用于其它的一些实现中,并不拘泥于这个技术中。由此可见,对于一个新技术的掌握,其层次是分的很开的,层次不同, 当然其掌握就不一样,所需要花的时间也不一样,所以经常看有些书封面写的多少小时完全掌握一个什么技术,其实那都仅仅是个皮毛。  

      好了,言归正转,我们来谈谈Hibernate中的一些较深的内容。

     先来看看实体映射,简单的实体映射就不用太多说了,一个表对应一个pojo利用xxx.hbm.xml配置文件,这里有一点要注意就是pojo的bean 文件中setter或是getter方法要制定成public的,这要可以提供Hibernate的性能。对于pojo的某个属性我们可以采用自定义的数 据类型,即非基本数据类型,例如List,但其实这仅仅在于从数据库表中读出时可以自动专程List,而我们在写入时还是数据库表所支持的那些数据类型。 对于数据库表我们知道其还有复合主键的概念,Hibernate同样支持。另外一个是对Blob,Clob这样的大字段类型的映射,Hibernate和 Oracle配合起来有些特殊,和Sql server2000则没有。

     以上是简单的实体映射,像Hibernate这样的ORM解决方案来说难点在于二维的关系型数据库表和面向对象结构(面向对象的特点有封装,继承,多态) 的POJO的对应,简单的映射是没有反应出面向对象的特性的。 我们可以将一个表中的字段分别映射到多个 POJO中,这样在设计的粒度上更加清晰,实际上也是实现了对于传统关系型库表的面向对象的领域划分,在 xxx.hbm.xml中使用结点component。 在Hibernate3中对于POJO的属性提供了延迟加载,这样可以有效地提高我们读取部分表字段的性能。对于继承关系的多个POJO, Hibernate也提供了3种映射方法:一是父类和各子类都对应一个表(这在我的一个实际项目中可以采用这种方式来解决数据库表的union的问题,当 然也可以用HQL查询语言来解决),在做查询时Hibernate会自动查询所有父类和子类对应的表,这种方法不好的地方在于改动父类的属性映射,各子类 的映射文件也要改动;第二种方法是子类对应的表中只包含扩展的属性字段,这样的话xxx.hbm.xml只需要一个,在配置文件中利用joined- subclass结点来引入子类的控制属性的映射;最后一种方法是只要一个大表,将父类和各子类所以得属性字段都包括进来,配置文件也是一个,需要用到 discriminator节点来声明子类辨别标示的字段,这也就是说在数据库表中要多一个字段来做标示作用,另外用到subclass节点来配合 discriminator节点。

      以上是实体映射方面,下面我们来谈谈另一个比较麻烦的问题--数据关联

      所以我们要明白数据关联不等同于联合查询(就是指select中的join),我们在以前的面向sql语句的数据库编程中是没有数据关联这个概念的,以前 我们对于多表之间的一条sql语句的操作只限于select,但有了数据关联,我们可以同时对多表进行增,删,改。这都是由于现在是有了ORM的技术,才 有了数据关联这个概念,因为对象是很容易产生关联的,想象我们以前如果要往两个表中都插入一条记录,我们要写两条sql语句,然后batch执行,现在我 们只须对一个对象进行save,通过xxx.hbm.xml的配置Hibernate会自动往另一个表中插入一条数据,当然其底层实现上还是有两条sql 语句的,只不果我们在上层应用时不用写出来。

       说了这么多,到底数据关联具体是怎么回事了?

       数据关联可以看成是两个表之间的对应的某条或几条数据之间的关联(为什么是两个表之间,而不是多个表之间了,应为多个表之间的关联到具体的都可以拆成两两 关联),那这些关联可分为一对一关联,包括主键关联,外键关联;一对多关联,包括单向一对多和双向一对多(也就是一对多和多对一);多对多关联。

       具体的配置和特性我们下篇blog在讲。另外还有在下一篇还要谈到Hibernate的一些高级特性和性能优化方面的问题,这也可以算成是第三个层次了,呵呵。

       未完,待续........

分享到:
评论

相关推荐

    传智播客SSH(struts2 spring2.5 hibernate3.5) ppt 课件

    SSH(Struts2 + Spring + Hibernate)是Java开发中一种常见的企业级应用框架组合,它由三个主要组件构成,用于构建高效、灵活的Web应用程序。本篇将详细讲解这三个组件的核心概念、工作原理以及如何在实际项目中进行...

    ssh框架中的hibernate5

    SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中常见的三大开源框架的组合。这个框架集合提供了模型-视图-控制器(MVC)的设计模式,使得开发者能够更高效地构建动态网站和企业级应用程序。在这个组合...

    ssh框架实例过程(MyEclipse+struts+spring+hibernate整合)

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个实例是为初学者设计的,通过MyEclipse集成开发环境,详细介绍了如何将这三大框架整合到一个登录工程中。下面将详细...

    (进阶)SSH框架实现员工部门管理系统

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个项目“(进阶)SSH框架实现员工部门管理系统”旨在利用SSH的优势,构建一个能够管理员工及其所在部门的高效应用。...

    泰牛程序员 韩顺平 JavaEE全套 第18部分 SSH整合-校内网视频教程

    此部分主要介绍了如何在JavaEE项目中整合SSH框架,即Struts2、Spring和Hibernate三个开源框架。以下是针对该主题的详细解析。 ### 一、JavaEE简介 Java平台企业版(Java Platform, Enterprise Edition,简称JavaEE...

    基于 Java+Mysql+ssh员工管理系统

    【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:Employee jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页...

    struts_hibernate_spring三大开源框架例子

    Struts、Hibernate 和 Spring 是Java开发中非常著名的三大开源框架,它们各自负责应用程序的不同层面,协同工作以构建高效、可维护的Web应用。Struts 主要处理MVC(Model-View-Controller)架构中的Controller部分,...

    Java SSH 框架整合,学习源码

    Java SSH 框架整合是Java开发中常见的一项技术,主要涉及Spring、Struts和Hibernate这三个开源框架。这些框架在企业级应用开发中扮演着重要角色,分别负责控制层、视图层和持久层的管理。下面将详细介绍SSH框架整合...

    基于SSH的J2EE项目网上书城

    【基于SSH的J2EE项目网上书城】是一个典型的Java Web应用程序,它采用了Spring、Struts2和Hibernate(SSH)三大框架进行开发。这个项目旨在实现一个完整的在线图书销售平台,用户可以在平台上浏览、搜索图书,进行...

    J2EE复习笔记--java程序员学习与进阶的良师益友

    基础知识阐述和高级知识进阶,难点解疑,热点分析。 包括jsp基础,servlet,数据库,javabean, structs,mvc设计,spring,jsp进阶,hibernate,ssh项目实战,jsp-dao-mvc进阶等章节,是学习参考不错的资料。

    spring+struts2+hibernate完整项目初学者进阶练习

    【标题】"spring+struts2+hibernate完整项目初学者进阶练习"是一个针对Java初学者设计的进阶项目,旨在帮助他们熟练掌握三大主流Java Web开发框架——Spring、Struts2和Hibernate的集成应用。这个项目是基于MySQL...

    ssh(spring+strut1.x+hibernate)整合完整教程 附带包

    SSH整合是Java Web开发中的一个经典组合,由Spring、Struts1.x和Hibernate三个框架构成。这个整合提供了全面的企业级应用解决方案,涵盖了控制层、业务层和服务数据持久化层的管理。下面将详细讲解SSH整合的主要知识...

    java SSH框架视频教程-项目实战-校内网.课堂源代码.zip

    课堂源代码.zip”压缩包提供了相关的学习资料和项目源码,旨在帮助初学者或进阶者深入理解并实践SSH框架。 首先,我们来看`java项目本地环境搭建手册.pdf`。这份文档通常会详细介绍如何在本地计算机上配置Java项目...

    Java web开发进阶

    ### Java Web开发进阶知识点梳理 #### 一、基础级知识点 **1.1 面向对象基础** - **定义**: 面向对象编程(Object-Oriented Programming,OOP)是一种程序设计思想,它将现实世界中的事物抽象为类和对象,并通过...

    ssh需要的包

    在IT行业中,"SSH整合"通常指的是将SSH与其他技术(如Spring、Struts和Hibernate,这三者合称为SSH框架)结合使用,构建基于Java的Web应用程序。下面将详细解释SSH整合开发涉及的知识点,以及压缩包中可能包含的相关...

    Hibernate、structs、spring教程

    这三者合称为SSH(Struts、Spring、Hibernate)框架组合,是Java EE领域中用于构建高效、灵活和可扩展应用程序的常用工具。接下来,我们将深入探讨这三个框架的主要功能和知识点。 1. Hibernate: Hibernate是一个...

    一个简单的SSH框架程序

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个“一个简单的SSH框架程序”很显然是一个基于这些技术构建的应用实例,用于帮助开发者理解并学习如何整合这三种框架...

    初学SSH简单集成工程

    这个"初学SSH简单集成工程"是一个针对初学者的教程项目,旨在帮助他们理解和学习如何将Spring、Struts2和Hibernate这三大开源框架集成到一个应用程序中。SSH框架组合是Java Web开发中的常见选择,提供了数据访问、...

    java基本学习框架.pdf

    - **SSH (Struts-Spring-Hibernate)**: SSH是一个流行的Java Web开发框架组合,它整合了三种不同的框架: - **Struts**: 用于构建基于MVC架构的Web应用。 - **Spring**: 提供依赖注入功能,简化Java EE开发中的...

    轻量级J2EE企业级开发实战-Struts+Spring+Hibernate整合开发

    《轻量级J2EE企业级开发实战-Struts+Spring+Hibernate整合开发》这本书是专为Java开发者设计的一本实战指南,旨在帮助读者深入理解并掌握SSH(Struts、Spring、Hibernate)三大框架的集成应用。SSH是Java领域中广泛...

Global site tag (gtag.js) - Google Analytics