
一)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

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;
}

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{

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 集合,它在表里面是怎样描述的呢?如果那些集合是保存这种类示例的,似乎可以转化为表的一对多的关系?
另外一方面,继承机制是怎样在数据块表里面受到表现的呢?继承的关系如何用的关联关系表达呢?继承所涉及的动态类识别如何在中受到表现呢?

再往深处想一想,对于一个操作:
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
也要一路走下去#剩者为王
一定能达到德艺双馨的境界
晶晶跟几年前一样