hibernate的核心类和核心配置

 

       hibernate的核心类和配置

 

  • Configuration

 

  1. 加载核心配置文件hibernate.cfg.xml

  2. 管理关系配置

  • SessionFactory接口

 

  1. 可以缓存sql和数据(session级缓存)

  2. 重要级的类,一个数据库对应一个SessionFactory

  3. 获取session(可以通过openSession()getCurrentSession()方法获取)

    openSession()getCurrentSession()区别

 

  1. openSession是开启一个新的session

  2. getCurrentSession是获取和当前线程绑定的一个session,换言之,在同一个线程中,获取的线程是同一个sessionhashcode值是一样的,这样有利于事务的控制,在核心文件hibernate.cfg.xml中配置,配置如下

    <property name="current_session_context_class">thread</property>

  3. 选择使用原则

 

  1. 如果在同一个线程中,保证使用一个session,则使用getCurrentSession

  2. 如果在同一个线程中,保证使用不同的session,则使用openSession

 

  1. 通过getCurrentSession获取的session在事务提交后,会自动关闭(不要再去手动关闭,否则会报session已关闭异常);通过openSession获取的session则需要手动去关闭

  2. 如果通过getCurrentSession获取的session查询操作,则需要事务提交

 

            本地事务:针对一个数据库的事务

 

            全局事务(jta):跨数据库的事务(例如转账,工行到建行,有两个数据库)

  • Session接口

      1 Session一个实例代表与数据库的一次操作(当然一次操作可以是crud组合)

      2 Session实例通过SessionFactory获取,用完需要关闭

      3 Session是线程不同步的,因此要保证在同一个session中,可以使用getCurrentSession()

      4 Session可以看做是持久化管理器,它是与持久化操作相关的接口

 

 

  1. get()load()方法区别

 

  1. get()查询直接返回实体类,如果查不到数据则返回nullload()如果没有返回实体类,就会抛出org.hibernate.ObjectNotFoundException

  2. 使用get()先到缓存(session缓存/二级缓存)查询数据,如果没有数据,立即向数据库发送select请求;使用load()先到缓存(session缓存/二级缓存)查询数据,返回的是一个代理对象,如果没有真实使用到对象,就没有真正向数据库发送select请求,这是懒加载机制(lazy

  3. 可以通过关系配置文件修改懒加载:

    <class name="com.bobo.domain.User" lazy="false" table="user">

  4. 如何选择使用get()或者load()

    如果确定数据库有具体某条数据,使用load();如果不确定,则使用get()(这样使用效率高)

  • Transaction类,事务类

 

  1. 事务开始beginTransaction,提交submit,回滚rollback等方法

  2. 必须有事务提交,才可以更新数据到数据库

 

 

  • 核心配置文件hibernate.cfg.xml

 

  1. 配置对应的数据库信息:数据库连接,用户名,密码,方言等

  2. 加载数据库驱动

  3. 指定加载映射关系配置文件

 

 

  •   类与数据库表的关系配置

    文件命名规则:一般是类名.hbm.xml

 

  1. 表名和字段名都要对应上类名和属性名

  2. 主键的生成策略

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值