Java开源项目Hibernate

电脑杂谈  发布时间:2019-11-08 23:05:14  来源:网络整理

jsp 日记本 开源源码_项目管理软件 开源_jsp开源项目

一)Hibernate意义

在一个真正的OOAD中,我们的设计首先是做UML建摸,最终将一个系统涉及所有对象(这个东西不是东西这么简洁)用类图来表中央空调维修数据' target='_blank'>数据的类module(bean类),辅助类或者更多(具体疑问具体剖析,但是将业务所需数据归结为一个类module更合适分层)。到低层实现的之后,

为了获得数据以及存储数据,你不得不为此加上一个操作的控制逻辑,到此,你完美的设计貌似会因此付出很大的尽力,因为你看见的业务数据层是一个复杂的组件,即使从面向对象观点来看,我们UML类图中的,业务数据层也是一个数据模块。Hibernate已经帮我们解决了业务数据层这个原本非常复杂的组件的底层实现,现在,我们即使在外层裹上我们的代表数据的类即可。

二)对象建模与关系模型变化

在写出我初探Hibernate的体会之前,我认为写下这一节还是很有必要的。带着问题探究远远比带着好奇探究要含义深远得多。

问题领域:

关系型是内存数据的最好选择,但是随着OO技术逐渐演进,在persisitent层上关系型的设计模式与OO体系格格不入jsp开源项目,可以想像,当满脑子充斥着OOAD的你想起如何隔离满天飞的SQL语句时,那是如此伤心的表情。无论你的业务层设计如此完美jsp开源项目,在真正存储数据以及读取数据时,你应对的大抵是一大堆封装好的数据,这些数据在JDBC中早已完全丧失对象(这里的对象称之为业务对象可能更为确切)的含义,你整体的OOAD到此为止。为什么会导致这些状况呢?原因是对象建模与关系模型根本设计模式之间的差异。

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

1) 以对象看待世界。

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

而关系模型唯一出发点是有效存储数据,KEY是的关键科技,关系在这里只是各个数据表的KEY之间的关联,这种关联我感觉需要称之为数据的关联,其表达的涵义远远没有对象之间的关联如此深广。

那么,我今天最关心的难题是hibernate是怎样运用关系的数据表KEY关联来表达对象之间的关系呢?

在开启正式研究Hbernate之前,我们可以思考一下问题的貌似简单与感觉非常复杂的冲突。

我们设计的代表数据层的所有类需要完美的展现在数据表之中。可以这么总结:

class-àtable

项目管理软件 开源_jsp开源项目_jsp 日记本 开源源码

class1—(关系)---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;

}

jsp开源项目_jsp 日记本 开源源码_项目管理软件 开源

public void setName(String name){

this,name=name;

}

}

我们完全可以这么进行name映射:

className-àtableName

propertyNameàcolumnName

一个类实例就是table的一行。这个难题很简单的得到缓解。

再进一步,考虑如下简单的类关联:

public class Class1{

public Class2 class2;

public Class2 getclass2()…

public void setClass2(Class2 class2)…

}

public class Class2{

jsp 日记本 开源源码_项目管理软件 开源_jsp开源项目

public Class1 class1;

public Class1 getClass1()...

...

}

这种关系很显然是双向的,可以从class1中受到class2,反过来,也可以从class2中受到class1,那么表现到数据表中呢?首先可以肯定class1àtable1,class2àtable2;很显然,table1和table2都要相互提高多一列来保存他人的key。

这些简单的关系在表的关联中受到了较好的支持,但是稍微复杂一点的呢?

诸如以上一个类:

public class S {

ArrayList datas;

Public List getDatas()..

Public void setDatas(List datas)..

….

}

这里一旦简单用下面所预测的propertyname-àColumnName显然不可以,这种集合成为bean属性我们该如何在数据表中受到很高体现呢?如果这种集合也是简单的String 集合,它在表里面是怎样描述的呢?如果那些集合是保存这种类示例的,似乎可以转化为表的一对多的关系?

另外一方面,继承机制是怎样在数据块表里面受到表现的呢?继承的关系如何用的关联关系表达呢?继承所涉及的动态类识别如何在中受到表现呢?

项目管理软件 开源_jsp开源项目_jsp 日记本 开源源码

再往深处想一想,对于一个操作:

public class BookStore{

Set books;

Public Set getBoos()..

Public void setBooks(Set boos)…

Public void addBook(Book book)…

public class Book{

public BookStore bookStore;

public Parent getBookStore()..

..

}

在业务逻辑中,我们会这么写代码:

Book book=new Book();

.bookStore.addBooks(book);

上面两行代码便早已知道地确立了child与parent之间的关系,相对来说,中的数据也需要按照这几行代码创建形成数据并制定这些关联。此时存储中的数据如何跟中的数据一致呢?


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-129336-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 樱井智
        樱井智

        晶晶跟几年前一样

        • 郝申全
          郝申全

          也要一路走下去#剩者为王

      • 时雪
        时雪

        一定能达到德艺双馨的境界

      热点图片
      拼命载入中...