zoukankan      html  css  js  c++  java
  • 框架选择

          有关软件框架其实一直不是太熟悉,之前结课了的Java EE老师讲了三大框架:SSH,也就是StrutsSpringHibernate。也在上课时带领我们一起跟着做了几个小程序,对我来说,基本上只算是认识了三大框架,用起来还是比较吃力。毕竟课程时间有限,老师上课讲的内容也不能面面俱到,还是得课下自己学一些内容。至于框架的选择,本打算三个都用,但是Struts和Spring着实还是不是太了解,用起来比较难,所以最后还是决定用Hibernate。下面来介绍一下Hibernate:

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    Hibernate的工作原理:
    1.Hibernate 的初始化:
    读取Hibernate 的配置信息->创建Session Factory
    1)创建Configeration类的实例。
    它的构造方法:将配置信息(Hibernate config.xml)读入到内存。
    一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。
    2)创建SessionFactory实例
    把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。
    SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration 对象关联。
    缓存(cache):指Java对象的属性(通常是一些集合类型的属性--占用内存空间。
         SessionFactory的缓存中:Hibernate 配置信息。OR映射元数据。
    缓存-大:重量级对象 小:轻量级对象
    3)调用SessionFactory创建Session的方法
    1】用户自行提供JDBC连接。
       Connection con=dataSource.getConnection();
       Session s=sessionFactory.openSession(con);
    2】让SessionFactory提供连接
       Session s=sessionFactory.openSession();
    4)通过Session 接口提供的各种方法来操纵数据库访问。
    Hibernate 的缓存体系
    一级缓存:
    Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。
    每个Session 都有自己独立的缓存,且只能被当前工作单元访问。
    二级缓存:
    SessionFactory的外置的可插拔的缓存插件。其中的数据可被多个Session共享访问。
    SessionFactory的内置缓存:存放了映射元数据,预定义的Sql语句。
    Hibernate 中Java对象的状态
    1.临时状态 (transient)
    特征:
       1】不处于Session 缓存中
       2】数据库中没有对象记录
    Java如何进入临时状态
       1】通过new语句刚创建一个对象时
       2】当调用Session 的delete()方法,从Session 缓存中删除一个对象时。
    2.持久化状态(persisted)
    特征:
       1】处于Session 缓存中
       2】持久化对象数据库中设有对象记录
       3】Session 在特定时刻会保持二者同步
    Java如何进入持久化状态
       1】Session 的save()把临时->持久化状态
       2】Session 的load(),get()方法返回的对象
       3】Session 的find()返回的list集合中存放的对象
       4】Session 的update(),saveOrupdate()使游离->持久化
    3.游离状态(detached)
    特征:
       1】不再位于Session 缓存中
       2】游离对象由持久化状态转变而来,数据库中可能还有对应记录。
    Java如何进入持久化状态->游离状态
       1】Session 的close()方法
       2】Session 的evict()方法,从缓存中删除一个对象。

    Hibernate原理图:

     

    查了不少资料,但感觉还是不太了解,应该是缺少实践,所谓纸上得来终觉浅,还是得赶紧动手实践。自己感觉Hibernate还是三大框架中最简单的一个,也有不少优点,比如是程序更加面向对象;提高了生产率;方便移植;无侵入性等,最终还是选择了它。

  • 相关阅读:
    端口服务
    系统设计的主要原则是什么?
    Dynamics CRM2015 Custom Code Validation Tool工具的使用
    CONFIGURE ADFS 3.0 WITH SHAREPOINT 2013
    Sharepoint Solution Gallery Active Solution时激活按钮灰色不可用的解决方法
    Dynamics CRM 2015Online Update1 new feature之 插件跟踪日志
    Dynamics CRM2013/2015 Plugin注册工具Register New Assembly时无法看到注册按钮的解决办法
    Dynamics CRM 2015 站点地图公告配置实体显示名称的变更
    Dynamics CRM 2015 Online Update1 UI界面的更新变化
    SQL Server2012 AlwaysOn 无法将数据库联接到可用性组 针对主副本的连接未处于活动状态
  • 原文地址:https://www.cnblogs.com/xiaowumao/p/5468236.html
Copyright © 2011-2022 走看看