图片 2

【Hibernate】二、核心接口

Hibernate的工作流程

1.应用程序通过Configuration读取配置文件,并创建SessionFactory对象。

2.通过SessionFactory生成一个对象。

Session session=SessionFactory.openSession();

3.通过Session对象的beginTransaction()创建一个事物。Transaction
t=session.beginTransaction();接着可以通过Session对象的get、save()、update()、delete()和saveOrUpdate()等方法实现数据的加载、保存、更新、和删除等操作;也可以通过session生成一个Query对象然后利用Query对象执行查询操作;最后通过commit()方法或rollback()方法完成事物操作。

4.在完成所有持久化操作与事物操作后需要关闭Session与SessionFactory。

  .setProperty(“hibernate.dialect”,
“org.hibernate.dialect.MySQLDialect”)

图片 1Hibernate结构

(3)为Configuration指定POJO类,Order.hbm.xml根Order.java一个目录

Transaction

负责事物相关的操作,主要方法有commit()和rollback(),其中commit()方法用来负责事物的提交,rollback()方法负责事物的回滚,可以通过Session的beginTrancation()方法来创建。

3.Session接口是我们最常用的一个接口,是一个轻量级的类,创建和销毁它并不会占用很多资源。请注意,Session对象是非线程安全的,因此在你的设计中,最好一个线程只创建一个Session对象。

Configuration

用于读取Hibernate配置文件,并生成SessionFactory对象,其中配置文件有hibernate.cfg或hibernate.properties;另一类是映射文件.xml文件,为了方便管理,通常会给每个对象创建一个单独的映射文件。

Transient(自由/临时状态):不曾进行持久化,数据库中没记录,也就是说没有与Session发生过关联。

session

一个轻量级的非线程安全的对象,主要负责被持久化对象与数据的操作,可以使用SessionFactory来创建一个Session,当对数据库的所有操作都执行完,就关闭session,session在访问数据库时会建立与数据库的连接,这个连接只有在需要时才会被建立。

session状态图

Query

负责执行各项数据库操作,可以使用Hibernate查询语言或SQL语句两种方式查询,可以通过session.createQuery()方法创建Query()。此外,Hibernate还提供了另外一种查询方式QBC,使用方法是:先使用session实例的createCriteria()方法创建Criteria对象,接着使用工具类Restrictions的方法Criteria对象设置查询条件,同时还可以用Older工具类设置排序方式,最后用Projections工具类的方法进行统计和分组,使用Criteria对象的list()方法进行查询并返回结果,需要注意的是,QBC是一种类型安全的面向对象的查询方式。

  .addClass(test.User.class)

SessionFactory

负责初始化Hibernate,它可以被看作是数据源的代理,用来创建session对象,SessionFactory对象是线程安全的,可以同时被多个线程访问。一般而言,SessionFactory会在Hibernate启动时创建一次,因此,为了便于使用,SessionFactory应该用一个单例模式来实现,

笔记来自网络整合

Hibernate提供的接口

Configuration cfg = new

Hibernate是一个开放源代码的对象关系映射框架,,对JDBC进行了非常轻量级的对象封装,所以任何可以使用JDBC的地方都可以用Hibernate来替代,实现了对象与关系数据库记录的映射关系,简化了开放人员访问数据库的流程,极大地提高了软件开发的效率。

图片 2

5.Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。

  JDBC API、JTA(Java Transaction API)、CORBA(Common Object Requet
Broker
Architecture)API 。Hibernate应用可通过一致的Transaction接口来声明事务边界,这有助于应用在不同的环境容器中移植。尽管应用也可以绕过Transaction接口,直接访问底层的事务接口,这种方法不值得推荐,因为它不利于应用在不同的环境移植。

  它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享。

  .setProperty(“hibernate.order_updates”, “true”);

或者

SessionFactory不是轻量级的对象,它包含与指定数据连接各种配置信息,是个线程安全的全局对象,只需要被实例化一次。我们不应该在应用程序中多次实例化它。

  它是重量级的,这意味着不能随意创建或销毁它的实例。

SessionFactory sessions = cfg.buildSessionFactory();

(2)为Configuration指定映射文件

二.接口关系图

(5)获得SessionFactory

(4)为Configuration指定Hibernate配置属性,当然我们加载了配置文件就不能使用这个方法了。

2.一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例。

commit()提交事务;

rollback()在发生异常时回滚事务。

  5.Query和Criteria接口:执行数据库查询。

发表评论

电子邮件地址不会被公开。 必填项已用*标注