hibernate的核心类和接口(2)

来源:互联网 发布:虚幻4编程语言 编辑:程序博客网 时间:2024/04/30 10:34

在实际的Hibernate应用中,使用到的Hibernate核心接口与类并不多。要更深入地使用Hibernate,还需要学习Hibernate的延迟加载缓存处理等高级的内容。下面附上Hibernate核心类和接口的层次图:
这里写图片描述

  • 最底层的配置文件,在上一讲有详细讲解配置。

Configuration 类

    org.hibernate.cfg.Configuration 实例代表了一个应用程序中 Java 类型到SQL数据库映射的完整集合。作用如下:
  • 负责管理hibernate的配置信息。
  • 读取hibernate.cfg.xml中的配置信息。
  • 加载hibernate.cfg.xml配置文件中配置的驱动,url,用户名,密码,连接池。
  • 管理对象映射文件*.hbm.xml(例:<mapping resource=”com/cmj/domain/Employee.hbm.xml”>)

SessionFactory

当所有映射定义被 org.hibernate.cfg.Configuration 解析后,应用程序必须获得一个用于构造 org.hibernate.Session 实例的工厂。这个工厂将被应用程序的所有线程共享:

  • 可以缓存sql语句和数据(称为session级缓存)
  • 是一个重量级的类,因此我们需要保证一个数据库,有一个SessionFactroy
  • 通过SessionFactory借口可以获得session实例(getCurrentSession(),openSession())

注:openSession()区别getCurrentSession()

1.openSession() 是获取一个新的session.
2. getCurrentSession () 获取和当前线程绑定的session,换言之,在同一个线程中,我们获取的session是同一session,这样可以利于事务控制
如果希望使用 getCurrentSession 需要配置 hibernate.cfg.xml中配置.
配置:thread将session与线程绑定。
3. 如何选择
原则:
①如果需要在同一线程中,保证使用同一个Session则,使用getCurrentSession()
②如果在一个线程中,需要使用不同的Session,则使用opentSession()
4. 通过 getCurrentSession() 获取的session在事务提交后,会自动关闭,通过openSession()获取的session则必须手动关闭
5. 如果是通过getCurrentSession() 获取 sesssion ,进行查询需要事务提交.


session(会话)

  1. Session一个实例代表与数据库的一次操作(当然一次操作可以是crud组合)
  2. Session实例通过SessionFactory获取,用完需要关闭。
  3. Session是线程不同步的(不安全),因此要保证在同一线程中使用,可以用getCurrentSession()。
  4. Session可以看做是持久化管理器,它是与持久化操作相关的接口

几个重要的方法

  • 保存一个对象(记录)—-save方法
  • 删除一个对象(记录)—-delete方法
  • 查询一个对象(记录)—-get/load方法
  • 修改一个对象(记录)—-update方法
0 0
原创粉丝点击