正文

HibernateNote(1)2008-04-27 11:15:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/ghlat520/34595.html

分享到:

 第一章:Java对像持久化技术概述
                     本章内容:
                       1)软件分层结构
                       2)三层结构
                       3)域对像的概念
                       4)域对像的几种关系
                       5)域对像持久化的概念
                       6)ORM简介
                       7)什么是Hibernate


                         软件分层结构
软件的层次结构就现阶段而言分为两种层次结构。一种是两层结构(C/S)模式,另外一种是三层结构。在两层结构中数据库层存放持久性的业务数据,应用程序单独做为一层。在这个层中负责生成用户的界面代码和负责业务逻辑的代码混合在一起。例如:一个jsp文件中既包含生成动态网页的代码,还包含响应用用户请求完成相应逻辑的代码。由于界面代码与业务代码掺杂在一起,使程序的结构混乱,维护起来困难。特别是对于企业级的应用程序这种情况难以忍受。于是三层结构应运而生了。三层结构把整个应用程序分成三个层面。
 

                              三层结构

1:三层结构被分为:表示层(界面),业务层,数据层
2:表示层访问业务层,业务层访问数据库层
3:业务层向表示层公开API,数据层向业务层公开API,以后业务层与数据库层如果发生变化,
  只要API不变,就不会影响其它的层
4:三层结构的优点:
    A:伸缩性(应用程序是否能支持更多的用户)
    B:可维护性(当业务发生需求变化时,只需要修改相应的层,而不会影响其它层)
    C:可扩展性(当要增加新的业务需求时,直接在相应的层中增加扩展点)
    D:可重用性(一个业层可以被多个表示层调用)
    E:可管理性(分层之后,层的功能相对独立,这样可以把层的管理任务分配给不同的小组进行管理)
5:在三层体系结构中会发现业务层不仅要处理业务逻辑,而且直接访问数据层提供对业务数据的保存、更新、  删除和查询操作,数据层的功能实际上就是把数据保存在数据库中,而不是在内存中,所以有一个数据持久性的作用在里面。于是数据层以后被称为数据持久层。
6)新的层次关系:
      表示层---->业务层---->数据持久层---->数据库
7)如何来实现持久化层呢:
   第一种方法:重新用最原始的Jdbc提供的API来编写数据持久层。对于一个企业级的应用程序如果重头开始     编写持久层会花费大量的人力、财力。
   第二种方法:直接使用软件业界已经为我们做好的持久层中间件。Hibernate就是目前最受欢迎的用来实现                持久层的中间件

 
     域对像的概念(Domain Object)
         A:实体域对像。实体域对像代表人、地点、事物。通常把业务领域中的名词,例如:客户、订单、商            品等做为实体哉的对像。域对像实际上就是一个java普通类即javaBean。相当一个描述类。也被称            为POJO类(Plain old java object)普通java对像
         B:过程域对像。过程域对像代表应用程序的业务逻辑。它是业务领域中的动词。比如客户发出订单,            客户登录等。过程域实际上用来实现业务逻辑。而实体域是用来描述业务逻辑中所汲及的实体。相            当于管理类


                     域对像的关系

          A:关联关系:如果类A与类B关联,那么被引用的类B将被定义为类A的属性,是最常见的关系
               (客户类与订单类,订单类中有一个属性为客户编号)
            public class A
             {
               private B demoB;
               .....
             }
            public class B
             {
                 ......
             }
         B:依赖关系:如果类A访问类B中的属性或方法或者类A负责实例化类B,可以说类A依赖于类B与
                 关联不同的是无需把类B定义成为类A的属性.过程域与实体域就属于此关系。
               public class A
                  {
                      public B  CreateB();
                          {
                            创建类B的实例
                           }
                       //或者如下
                      public void Method(B demoB)
                        {
                           ......
                        }
                  }
                public class B
                {
                   .....
                }
       C:聚集关系:是整体与部分的关系。比如:人类与手类。电脑类与鼠标类等。在实体域之间比较常见。             即在类A中聚集着类B。一个类A里面有多个B的实例 。聚集关系与关联关系很相似。但是他们之间             有明显的区别.对于聚集关系中的部分类不能单独存在必须要配合整体类才能工作。对对于关联关            系充许每个类都单独存在。比如:老板与员工的关系就是关联关系,而不是聚集关系。因为员工离            开了某一个老板照样生活,也就是说员工可以单独存在类
             pblic class A
             {
                 private ArrayList b=new ArrayList();
             }
           public class B
            {
            }
      D:泛化关系:类之间的继承关系。
       

                          域对像持久化的概念
  我们要处理业务逻辑时,通常会把域对像加载到内存中,然后进行修改。但是内存不可能永久保留数据      所以应该对域对像进行持久化。也即写入到数据库中。以后当再次要读取域对像的状态时可以从持久        化设备中重新加载域对像。并不是所有的域对像需要持久化,一般而言只有域对像需要持久化,但是并         不是所有域对像需要持久化,比如:购物车这个域对像它是只在一个会话中暂时存放客户购买商品的          信息。一旦会话结束,这些商品信息就要清除,但并不会保存到数据库中去.狭义的理解"持久化"仅仅是     指把域对像永久保存到数据库,广义的理解持久化包括和数据库相关的各种操作:
保存:把域对像保存到数据库中
更新:更新数据库的域对像属性
删除:从数据库删除一个域对像
加载:根据主键,把一个域对像从数据库中加载到内存中。
查询:根据特定的查询条件,把符合查询条件的一个或多个域对像从数据库中加载到内存中来

 


                           ORM简介
        ORM(Object Relation Mapping)对像关系映射。我们对业务逻辑的处理一般是采用面向对像编程(OOP)
        但是业务逻辑中域对像持久化的设备数据库是一关系型。所以就存在一个对像与关系的转换过程              被称为ORM。一般而言一个域对像类代表关系型数据库中的一张表。域对像的属性代表表中的字段,每         一个域对像代表中的一行记录。


                               什么是Hibernate 
1)Hibernate是连接Java应用程序与关系数据库的一个中间件。
2)中间件意味着Hibernate能够高度进行代码重用,不过java应用程序是基于jsp,还是swing还是控制台的只要
  Java应用程序就能够通过Hibernate与关系数据库进行交互
3)它对Jdbc进行了封装,使得持久化数据更快捷
4)它负责实现数据的持久化,位于持久化层,封装了所有访问数据库的细节,使业务逻辑层专注于处理业务逻辑
5)它是一个ORM映射工具,能够把面向对像的域对像与关系数据库进行映射
6)Hibernate的出现使开发者可以采用面象对像的方式来操作关系数据库
7)其它的ORM框架:EJB,TopLink(oracle公司的产品),hibernate(red hat组织)
 

阅读(1785) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册