SSH进阶之Hibernate(一)

    话不多说,直接进入正题。

    学习Hibernate首先要理解什么是Heibernate?Hibernate解决了什么问题?

接下来就由我来总结一下,Hibernate是ORM(对象数据库表的映射)之一,Hibernate 实现了通过对象操作数据库表,解决程序员实现业务逻辑依赖大量的SQL语句,从繁杂的代码中解脱出来。

    Hibernate英文是冬眠的意思,所以Hibernate位于持久层,把数据库访问的细节封装起来,但是数据的传递还是需要实体类实现实例化。而且实体类的数据类型一般用引用类型,因为数据的引用类型赋予null值。

    Hibernate的搭建步骤:

    拷贝必要的jar包,加载到构建路径----在应用顶部创建hibernate.cfg.xml----创建实体类,并且在该类的包下创建实体类名.hbm.xml----测试类测试


    测试类中主要的代码之间的联系:


    Hibernate常用的类或借口:

    Configuration类:Configuration用于初始化hibernate.cfg.xml 创建Configuration之后如果不调用configure 那么默认初始化的是hibernate.properties 文件, configure 方法可以传入参数,用于加载配置文件。

    SessionFactory :  一般一个应用对应着一个SessionFactory对象,这是因为其特点,SessionFactory是线程安全的,可以供多个线程使用;重量级,创建实例十分的耗费资源;是二级缓存(里边缓存了预制sql 语句,提高效率) ,所以一般都在启动应用时进行初始化操作。

    Session:被称为持久化管理器,实现增删改操作,session 为轻量级,不会消耗太多的资源;线程不安全,一般一个线程对应一个session对象;含有一级缓存(后边详细介绍)。

    Transaction:事务控制,实现事务的开启,提交和回滚

    HIbernate不会编译时出异常,会在运行时期报错。

    Hibernate区别对象:OID 

    java区别对象是根据内存地址,但是Hibernate区别对象根据oid(数据库的主键id相同,同时对象的equles和hascode相同)

    OID的生成策略一般是 native ,hilo(根据高低算法),identity(自动增长),sequence

    高低算法:value*(max_lo+1)+从0开始         value表示数据库的值,max_lo最大低位值。    

    Session(一级缓存):

    session会把获取的记录加载到session缓存当中,提高效率。当session 对表进行操作,session缓存含有快照机制,session获取数据库的记录,快照自动备份一份记录,当实体对象发生改变时(跟快照做比较),seesion.flush( )更新清理数据,不清空缓存 。还有其他的方法,例如session.clear( )清空session中的缓存,session.envit( obj ) 从缓存中移除某对象,session.refresh( ) 数据库中的记录覆盖更改的缓存对象

    清理的时机:

清理模式

查询QUERY

Transaction.commit

Session.flush

FlushMode.AUTO(默认)

清理

清理

清理

FlushMode.ALWAYS

不清理

清理

清理

FlushMode.NEVER

不清理

不清理

清理

FlushMode.COMMIT

不清理

清理

清理


    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值