Hibernate

请描述 Hibernate 的核心接口?

Configuration 接口

Configuration(配置)对象用来配置和引导 Hibernate。应用使用一个配置实例来指定映射文件的位置和 Hibernate 的特定属性,然后创建会话工厂。Configuration 的几个关键属性包括数据库的 URL、用户和密码、JDBC 驱动类以及方言(Dialect)等,这些属性可在 hibernate.cfg.xml 或 hibernate.properties(为默认)中设定:

  • 基于指定的 XML 配置文件得到 Configuration 对象:
File confFile = new File("configs\\myhibernate.cfg.xml");
Configuration config = new Configuration().config(confFile);
  • 基于 hibernate.properties 文件得到 Configuration 对象:
Configuration config = new Configuration();

SessionFactory 接口

应用从 SessionFactory(会话工厂)里获得会话实例。会话工厂可以在多个应用线程间共享。典型地,整个应用只有唯一的一个会话工厂——例如在应用初始化时被创建。如果应用使用 Hibernate 访问多个数据库,则需要为每一个数据库使用一个会话工厂。

会话工厂缓存了生成的 SQL 语句和 Hibernate 在运行时使用的映射元数据,同时也保存了在一个工作单元中读入数据并且可能在以后的工作单元中被重用的数据。SessionFactory 负责创建 Session 实例。

  • 通过 Configuration 实例来创建 SessionFactory 如下:
SessionFactory sessionFactory = config.buildSessionFactory();

Session 接口

Session(会话)接口是 Hibernate 应用使用的主要接口。会话并不是线程安全的,应该被设计为每次只能在一个线程中使用。

通过调用 Session 接口可透明地完成实体对象的 CRUD。CRUD 是指在做计算处理时的增加(Create)、读取(Retrieve,检索)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。

Hibernate 会话是一个介于连接和事务之间的概念,可以简单地认为会话是对于一个单独的工作单元已装载对象的缓存或集合。

Hibernate 可以检测到这个工作单元中对象的改变。因为 Hibernate 会话也是与持久性有关的操作,例如存储和取出对象的接口,有时也将其称为持久性管理器。

注意:Hibernate 会话与 Web 层的 HttpSession 的区别。有时也将 HttpSession 称为用户会话。

实现步骤:

由 SessionFactory 创建 Session 实体:

Session session = sessionFactory.openSession();

调用 Session 接口对象的 save() 非法新增实体对象如:

Member member = new Member("rnny", "666");
session.save(member);

调用 Session 接口对象的 get() 非法检索实体对象如:

Member member = session.get(Member.class, new Integer(1));

调用 Session 接口对象的 update() 方法更新实体对象如:

member.setUsername("软柠柠吖");
session.update(member);

调用 Session 接口对象的 delete() 方法删除实体对象如:

Member member = session.get(Member.class, new Integer(1));
session.delete(member);

Query 接口

Query(查询)接口允许在数据库上执行查询并控制查询如何执行。查询使用 HQL 或者本地数据库的 SQL 方言编写。查询实例用来绑定查询参数、限定查询返回的结果数、并且最终执行查询。查询实例时轻量级的并且不能在创建它的会话之外使用。

由 Session 创建 Query 实例如下:

String hql = "from Customer c where c.username = 'rnny'";
Query query = session.createQuery(hql);

注意:Session 接口中所支持的实体 CRUD 操作,Query 接口同样都可以支持。只是 Query 接口所提供的方法支持更为复杂的数据查询、批量更新和删除等实体操作。

Transaction 接口

Transaction(事务)接口是一个可选的 API,Hibernate 应用可在自己的底层代码中管理事务。

事务将应用代码从下层的事务实现中抽象出来,这样有助于保存 Hibernate 应用的可移植性。

Hibernate 支持两种事务处理机制:JDBC 事务和 JTA 事务,缺省为 JDBC 事务。

缺省,即系统默认状态,意思与 “默认” 相同。

缺省是一种计算机术语,指在无决策者干预情况下,对于决策或应用软件、计算机程序的系统参数的自动选择。默认选项的设计可以在用户不须决策的状况下就可以基础地使用上述的软件与程序。

“缺省” 最初来源于计算机英文文档中的单词 " default "," default ”有很多意思:违约、缺省、拖欠、默认,由于当时计算机方面的翻译水平不高,于是就把这个词直译成了“缺省”,其实应该取它的引申意思 “默认”。

posted @ 2023-03-13 13:50  软柠柠吖  阅读(13)  评论(0编辑  收藏  举报