zoukankan      html  css  js  c++  java
  • hibernate总结


    hibernate:
    1.hibernate的工作原理.
    1.通过configuration,类加载hibernate的主机配置文件
    2.创建sessionFactory文件
    3.由sessionFactory对象打开一个一个session对象.
    4.由session完成curd操作。如果是增删改还需要transcation类的支持,事务的开始begin,事务的提交
    commit,事务的回滚rollback。如果查询 hql,sql,qbc每一种返回对象不一样,query,crieria,
    querysql.
    5.session关闭.
    2.说说hibernate的缓存.
    持久化框架
    hibernate的缓存分为一级缓存和二级缓存。
    一级缓存称为session缓存,session内置不能被卸载,session的缓存是事务的范围,一级缓存中,持久化类的每个实列都具有唯一的oid.
    一级缓存中,缓存的销毁可以通过session.evict方法来进行清除。
    二级缓存又分为:内置缓存:数据存放在内存中。
    外置缓存:数据存放在内存,硬盘,Io等介质中。
    二级缓存:Hibernate二级缓存也称为进程级的缓存或SessionFactory级的缓存。二级缓存是全局缓存,它可以被所有的session共享。
    在执行各种条件查询时,如果所获得的结果集为实体对象的集合,那么就会把所有的数据对象根据ID放入到二级缓存中。
    当Hibernate根据ID访问数据对象的时候,首先会从Session一级缓存中查找,如果查不到并且配置了二级缓存,那么会从二级缓存中查找,
    如果还查不到,就会查询数据库,把结果按照ID放入到缓存中。
    删除、更新、增加数据的时候,同时更新缓存。
    还有就是经常要修改的数据不能放在缓存中,对敏感数据,如金融,银行等不能有缓存。游戏等可以有缓存。
    降低应用程序访问数据库的频率,从而提高应用系统的性能。

    二级缓存:1.需要在主配置文件中配置三个属性(默认二级缓存是关闭的,需要开启缓存)
    2.需要在原数据中配置cache标签:<cache:usage="read-only">cache隔离级别
    3.二级缓存的生命周期依赖于sessionfactory对象的生命周期,sessionfactory关闭后或销毁后,缓存的数据随之销毁。也可以手动调用evict方法清除某一个对象的缓存。
    3.hibernate的检索方式有哪些

    get立即检索 lazy=false,load延迟检索 lazy=true,外链接检索 fetch=join。批量检索

    导航对象图检索方式(根据已经加载的对象,导航其他对象)
    oid检索方式(按照对象的oid来检索)
    hql检索方式(使用面向对象的hql查询语言)
    qbc检索方式(qbc(query bycriteria)apl来检索对象)
    本地sql检索方式(使用本地数据库的sql查询语句)
    4.hibernate主键生成的策略有哪些, 各有什么特色.
    1.assigend表示在调用sava(),必须手动对主键进行复制,否则抛异常。
    2.increment 按主键的顺序进行生成数据,与底层数据没关系。
    3.identity根据底层数据库的主键生成策略去生成主键的值,orcal中不支持,mysql sqlservlet db2支持。
    4.sequence 根据底层数据的主键生成策略去生成主键值,mysql不支持orcal db2支持
    5.native 根据底层数据库自动判断采用:identity hilo squence 其中一种作用主键生成方式,去生成主键值。
    6.hilo高地位算法,跟数据库无关
    7.uuid 生成16进制长度为32为的字符串,号称唯一与底层数据无关。
    8.foregin外键生成:主键的值根据主表的引用自动去生成。
    5.load()和get()的区别是什么.
    相同点:都是通过主键id查询当前行数据,返回一行的数据。
    同一个session下,共享同一个查询的结果。
    两个session都要查询,都需要查询不能分享。
    不同点:1.get是立即加载, load是懒加载,并且是一个代理对象去查询。
    2.查询的主键不存在 get查询返回null ,load查询返回,objectnotfoundexception异常。
    6.hibenate的二级缓存的特点.

    二级缓存:1.需要在主配置文件中配置三个属性(默认二级缓存是关闭的,需要开启缓存)
    <propertyname="cache.provider_class"></property> provider_class
    <property name="cache.use_query_cache">true</property> 查询缓存
    <property name="cache.use_second_level_cache">true</property> 二级缓存
    2.需要在原数据中配置cache隔离级别标签:<cache:usage="read-only">cache隔离级别
    3.二级缓存的生命周期依赖于sessionfactory对象的生命周期,sessionfactory关闭后或销毁后,缓存的数据随之销毁。也可以手动调用evict方法清除某一个对象的缓存。
    jdbc:
    1.mysql和oracle的端口
    mysql:3306 orcal:1521
    2.mysql分页, oracle如何分页;
    limit分页; rownum分页;
    mysql: select* from 表名 limit start 开始是的下标,每页显示的数量
    ps: select * from student limit start0,3
    rownum :select * from 表名 rownum start 开始下标,每页显示的数量
    ps: select * from student rownum start 0,3
    3.jdbc的执行步骤.

    1.加载数据库驱动cass.forname
    2.创建connection连接drivermanager.getconnection();
    3.通过connection statement连接对象
    4.通过statement对象执行sql语句完成增删查该
    5.释放资源 关闭结果集 statement connection对象
    4.jdbc如何调用存储过程.
    1.class.forname加载数据库驱动;
    2.创建connection连接;
    3.通过connection对象创建callableStatement对象;
    4.设置传入的参数和注册传出参数;
    5.执行sql语句,获取传出参数;
    6.释放资源,关闭结果集,callableStatement对象、connection对象。
    5.jdbc如何调用数据库中的视图.
    一.class.forName 加载数据库驱动;
    二.创建Connection连接;
    三.通过Connection对象创建CallableStatement对象;
    四.通过Statement 对象执行sql语句完成查询操作;
    五.返回一个结果集对象,循环迭代结果集,
    六.释放资源,关闭结果集,Statement,Connection对象;

    6.数据库连接池的工作原理.

    运用程序启动时,初始化一定数目的数据库连接,并维护不少于最小值数目的池链接,某一个事务使用链接,并把当前链接标记成忙,用完之后放回池中,并标记为空闲。

  • 相关阅读:
    推荐阅读20100506
    Windows 7中使用任务计划和媒体播放器当闹钟
    推荐阅读20100517
    又遇IIS 7不能压缩js文件的问题
    推荐阅读20100523
    jQuery调用WCF服务时如何传递对象参数
    Execution permission cannot be acquired
    快乐出发
    推荐阅读20100509
    参加“全球互动娱乐专家讲坛”之“创业者与创业板”的收获
  • 原文地址:https://www.cnblogs.com/zlazm/p/7898577.html
Copyright © 2011-2022 走看看