HIbernate简述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38262968/article/details/78385131

Hibernate是一个对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得可以使用对象编程思维来操纵数据库。看到这里应该了解到Hibernate也是一个持久层框架。

 ORM的简单规则

  1. 类跟表对应
  2. 类属性与表字段对应
  3. 类实例与表中具体一条记录对应
  4. 一个类可与多个表对应,一个表也可对应多个类
  5. DB中表与表之间的关系(如:外键)映射成为Object之间的关系

Hibernate主要通过5核心个接口来进行对象的持久化操作和事务控制:

  • Configuration接口:主要对Hibernate进行配置、启动Hibernate并连接数据库系统,在启动HIbernate的过程中,Configuration实例首先确定HIbernate映射文件的位置,然后读取相关的配置,最后创建一个唯一的SessionFactory实例,这个唯一的SessionFactory实例负责进行所有的持久化操作。Configuration对象只存在系统的初始化阶段
  • SessionFactory接口:主要负责HIbernate的初始化。它作为数据存储源的代理,负责建立Session对象。 具体来说,在HIbernate中SessionFactory实际起了一个缓冲区的作用,HIbernate自动生成的SQL语句、映射数据以及某些可重复利用的数据都可存放在这个缓冲区中。同时,它还保存了数据库配置的所有映射关系
  • Session接口:Session接口是HIbernate中使用最为广泛的接口,也是持久化的核心。Session对象的生命周期以Transaction对象的事务开启和结束为边界。Session提供了一系列与持久化相关的操作,如读取、创建、和删除相关实体对象的的实例(即数据库中数据的增删改查),因此,Session也被称为持久化管理器
  • Transaction接口:Transaction接口主要用于管理事务,是HIbernate的数据库事务接口,它对底层的事务接口进行了封装。
  • Query接口:Query接口是HIbernate的查询接口,用于向数据库中查询对象,并控制执行查询的过程。在HIbernate中有三种检索方式,分别为HQL检索方式、QBC检索方式和SQL检索方式。传统的SQL查询语言是结构化的查询方式,这种方式并不适用于查询以对象形式存在的数据。

HIbernate的具体操作步骤:

扫描二维码关注公众号,回复: 3174288 查看本文章
public void init(){	
		//创建配置对象
		Configuration config = new Configuration().configure();
		//创建服务注册对象
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
		//创建会话工厂对象
		sessionFactory = config.buildSessionFactory(serviceRegistry);
		//创建会话对象
		session = sessionFactory.openSession();
		//开启事务
		transaction = session.beginTransaction();
	}

1. 创建一个配置对象(configuration对象 用来读取cfg.xml文件)

2. 利用配置对象创建的服务注册对象来创建会话工厂(在创建会话工厂的同时读取hbm.xml里的对象关系映射文件)

3. 在会话工厂了开启一个会话

4. 开启一个事物(seesion对象的方法必须要封装在事务当中,如果不开启在事务中,并且手工提交事务,对象并不会真正保存在数据库中)

5. 运行完方法后关闭事务,在关闭会话

         

    如果不开启事务的话应该调用Session对象的dowork方法(一般不推荐使用),记得在session.save();前操作doWork(new Work(){conn.setAutoCommit(true);});时,记得在session.save();后调用session.flush()

 

Hibernate中的关联关系映射

    对象之间都不是孤立存在的,他们之间往往需要相互引用以实现交互,这种对象之间的相互访问就是关联关系。在hibernate对象间的关联关系就表现为数据库中表与表的关系。 表可以通过外间进行关联,Hibernate中的关联操作可以减少多表连接时的代码量,并保持表之间的代码同步。

Hibernate关联关系可分为单向关联和双向关联两大类

单向:

分为一对一、一对多、多对一、和多对多四种关联关系

  1. 一对一关联有外键关联和主键关联两种方式
  2. 一对多则是通过外键进行关联的 需要在“多”的一边增加一个外键,并由“一”的一方指向"多"的一方,在"一"的一段的实现类中定义一个Set集合属性,使“多”的一方实例以集合的形式存在 (需在在hbm.xml文件中指定外键<key>)
  3. 多对一 同样也是通过外键来进行关联的 多对一映射方式类似于一对多,不过它是由"多"的一方指向"一"的一方。在多的一方的数据表中增加一个外键来指向表示"一"的一方数据表,"一"的一方作为主表,"多"的一方作为从表
  4. 而多对多则是利用一个中间表将两个主表关联起来。中间表的作用是将两张表的主键作为其外键,通过外键建立这两张表之间的映射关系。并且要在主控端的类定义中增加一个Set属性集合,使得被关联的一方的类的实例以集合的形式存在。

双向:

分为一对一、一对多和多对多3种关联关系

猜你喜欢

转载自blog.csdn.net/qq_38262968/article/details/78385131
今日推荐