)Hibernate意义

在一个真正的OOAD中,我们的设计首先是做UML建摸,最终将一个系统涉及所有对象(这个东西不是东西那么简单)用类图来体现一个完整的设计,我们最后可能得到这几种类:控制业务逻辑的类,保存业务数据的类module(bean类),辅助类或者更多(具体问题具体分析,但是将业务所需数据归结为一个类module更适合分层)。

到数据库低层实现的时候,

为了获取数据或者存储数据,你不得不为此加上一个操作数据库的控制逻辑,到此,你完美的设计估计会为此付出巨大的努力,因为你看到的业务数据层是一个复杂的模块,即使从面向对象观点来看,我们UML类图中的,业务数据层只是一个数据模块。

Hibernate已经帮我们解决了业务数据层这个本来十分复杂的模块的底层实现,现在,我们只要在外层裹上我们的代表数据的类即可。

二)对象模型与关系数据库模型差异

在写出我初探Hibernate的感受之前,我觉得写下这一节还是很有必要的。带着问题研究远远比带着好奇研究要意义深远得多。

问题领域:

关系型数据库是存储数据的最好选择,但是随着OO技术日益发展,在persisitent层上关系型数据库的设计体系与OO体系格格不入,可以想象,当满脑子充斥着OOAD的你想到怎么隔离满天飞的SQL语句时,那是多么痛苦的表情。无论你的业务层设计多么完美,在真正储存数据或者加载数据时,你面对的无非是一大堆封装好的数据,这些数据在JDBC中已经完全失去对象(这里的对象称之为业务对象或许更为确切)的意义,你整体的OOAD到此为止。

为什么会造成这种情况呢?原因是对象模型与关系数据库模型根本设计体系之间的差别。

对象模型与关系数据库模型各自理论出发点是不同的:对象模型的理论体系可以简单归结为这两点:

1) 以对象看待世界。

2) 对象间关系(继承,关联,聚合,组合)维系着整体构成。

而关系数据库模型唯一出发点是有效储存数据,KEY是数据库的关键技术,关系在这里只是各个数据表的KEY之间的关联,这种关联我觉得应该称之为数据的关联,其表达的意义远远没有对象之间的关联那么深广。

那么,我现在最关心的问题是hibernate是怎么利用关系数据库的数据表KEY关联来表达对象之间的关系呢?

在进入正式研究Hbernate之前,我们可以思索一下问题的似乎简单与似乎十分复杂的矛盾。

我们设计的代表数据层的所有类必须完美的体现在数据表之中。可以这样总结:class-àtableclass1—(关系)---class2------〉table1---(关系)-----table2

问题的解决似乎很简单,特别是对于javabean构架,更是简单(看起来简单而已!!!)。

想象一个简单的javabean类:public class SimpleBean{ protected int id; protected String name; public int getId(){

return id; } public void setId(int id){

this。

id=id; } public String getName(){

return name; } public void setName(String name){

this,name=name; }}。

全部

java hibernate 是什么意思_Java开源项目Hibernate意义是什么?相关推荐

  1. Java开源项目Hibernate包作用详解

    Java开源项目Hibernate包作用详解 本文引自:http://hi.baidu.com/nick6610/blog/item/70b58afa0d0eab9259ee90f7.html Jav ...

  2. 【源码+教程】Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕设项目_Java毕业设计_计算机毕业设计_Java项目开发

    今天为大家带来的是Java实战项目--学生成绩在线管理,可以用来做毕业设计喔~源码和教程就在下方.请大家查收~[源码+教程]Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕 ...

  3. java 博客系统_讲解开源项目:5分钟搭建私人Java博客系统

    本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...

  4. java开源项目源代码_java开源项目源代码

    java开源项目 源代码 http://www.codase.com/ http://java-source.net/ https://www.dev.java.net/ 名称 摘要 种类 appfu ...

  5. github java开源项目经验_Java 开源项目 GitHub 趋势周报 20201230

    [关注获取更多精选开源图书] 大家好!我是超级机器人 UltraBot,今天给大家推送本周 Java 开源项目 GitHub 趋势周报,本周更新开源项目 64. brettwooldridge / H ...

  6. JAVA连接Excel最好用的开源项目EasyExcel,官方使用文档及.jar包下载

    EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址:https://github.com/alibaba ...

  7. java跳骚市场的代码,开源项目在闲鱼、b 站上被倒卖?这是什么骚操作?

    万物皆可骚. 起因 - 又是一封邮件 2020 年 3 月 2 日,收到了一封邮件,对,这次故事的起因又是一封邮件,和上次写个bug被国家信息安全漏洞共享平台抓到了一样. 这是一条评论通知邮件,一开始 ...

  8. 推荐一个java的商业级saas电商开源项目

    该项目使用Java开发,SpringBoot框架.MyBatis-plus持久层框架.Redis作为缓存.MySql作为数据该库. 前端vuejs作为开发语言,使用uniapp编码,同时支持微信小程序 ...

  9. JFlow工作流项目集成案例_Java开源项目 RuoYi v4.1.0

    RuoYi平台简介 RuoYi是一个后台管理系统,基于经典技术组合(Spring Boot.Apache Shiro.MyBatis.Thymeleaf)主要目的让开发者注重专注业务,降低技术难度,从 ...

最新文章

  1. java 程序编译和运行的过程
  2. 吴恩达深度学习笔记10-Course4-Week1【卷积神经网络】
  3. 【C语言重点难点精讲】C语言文件
  4. FireMonkey 平台初探
  5. lambda不是python的保留字_python-nonlocal关键字的使用,lambda表达式(学习到function到变...
  6. wordpress 调用css,WordPress调用CSS最常用的方法有哪些?
  7. webview的javascript与Native code交互
  8. 看完电影《门锁》感觉脊背发凉,智慧园区带来安全感
  9. linux 的tac命令,每天学一个 Linux 命令(102):tac
  10. 冰箱10分钟启动一次_冰箱正常多久启动一次
  11. [ 报错记录 ]使用springboot时@Runwith报红
  12. excel 分组排名 countif
  13. 精读加密媒体扩展(Encrypted Media Extensions,EME)
  14. Tesseract-OCR安装与使用
  15. 微软证实10月25日正式发布Windows8系统
  16. IP2188中文数据手册
  17. Uniapp自定义相机界面
  18. v-show和v-if
  19. 计算机主机软件,计算机上提供了哪些软件来编辑音乐
  20. 淘宝/天猫、1688、京东API接口—item_search - 按关键字搜索淘宝商品

热门文章

  1. 创始人退休后的Python,起飞还是没落?
  2. java基础知识 API文档 字符串基本操作 正则表达式 Object
  3. CISA国际信息系统审计师
  4. Hive建表(分区表、非分区表)实例
  5. 工控系统主动安全防御体系的构建
  6. C#winform 从ftp下载文件(带进度条)、获取文件(夹)的名字
  7. mysql能放在电脑哪个盘_电脑文件一般放在哪个盘好呢?
  8. 【moodle】moodle dialog开发笔记 1
  9. 一座小桥(最多只能承重两个人)横跨南北两岸,任意时刻同一方向只允许一个人过桥,南侧桥段和北侧桥段较窄只能通过一个人,桥中央一处宽敞,允许两个人通过或歇息。试用P(wait)V(signal)操作实现
  10. 我的职业观——HP大中华区总裁孙振耀退休感言