Hibernate框架简介

Hibernate框架是一个非常流行的持久化框架,其在Web开发中占据了非常重要的地位。Hibernate作为Web应用的底层,实现了对数据操作的封装。Hibernate框架的应用可以改变传统的JDBC操作数据库的方式。

使用Hibernate框架最核心的是关于整体数据库的配置文件和与之相关的类。

Configuration类

Hibernate配置文件

SessionFactory类

Hibernate中的对象:临时对象、持久化对象、脱管对象

Hibernate中的持久化类:

1.1 Configuration

Configuration类负责管理Hibernate的配置信息,一个Configuration类的实例代表了应用程序中Java类到数据库的映射的集合。应用程序通常只是创建一个Configuration实例,并通过它创建SessionFactory实例。例如下面的代码:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

1.2 Hibernate配置文件:hibernate.cfg.xml

ConfigurationHibernate的入口,在新建一个Configuration的实例时,Hibernate会在类路径中查找文件hibernate.propertieshibernate.cfg.xml文件,如果这两个文件同时存在,则hibernate.cfg.xml将会覆盖hibernate.properties文件;如果两个文件都不存在,将抛出异常。

1.3 SessionFactory类

SessionFactory负责Session实例的创建。为了创建一个SessionFactory对象,必须在Hibernate初始化时创建一个Configuration类的实例,并将已写好的映射文件交由它处理。这样,Configuration对象就可以创建一个SessionFactory对象,当SessionFactory对象创建成功后,Configuration对象就没有用了,可以简单地抛弃它。例如下面的实例代码:

Configuration config = new Configuration().configure();

SessionFactory sessionFactory = config.buildSessionFactory();

SessionFactory是线程安全的,可以被多个线程调用以取得Session对象,而构造SessionFactory很消耗资源,所以多少情况下一个应用中只初始化一个SessionFactory,为不用的线程提供SessionSessionFactory是重量级的,不能随意创建或者是销毁。

1.4 Hibernate中的对象:临时对象、持久化对象、脱管对象

1)临时状态

对象在进行数据库保存操作之前被称之为临时状态,此时的数据库中并没有该对象的任何信息,而且该对象的Id信息。如果此时没被进行持久化,则会在程序退出时丢失临时状态对象的任何信息。

Java中的new命令开辟内存空间的Java对象,也就是平时所熟悉的普通Java对象。如果没有变量对它引用,它将被JVM收回。临时对象在内存是孤立存在的,它的意义仅仅是携带信息的载体,不和数据库中的数据有任何关联。通过Sessionsave()saveOrUpdate()方法可以把一个瞬时对象和数据库相关联,并把临时对象携带的信息通过配置文件所做的映射插入到数据库中,这个临时对象就成为持久化对象,并拥有和数据库继续相同的id字段。

2)持久化状态 

对象在保存到数据库后但并没有脱离Session的时候被称为持久化状态。该状态时的数据库中已经有了该对象的信息,而且该对象的Id为数据库中对应记录的主键值。不过由于此时还存在于Session中,所以持久化状态的对象可以对任何有关数据库的操作进行执行。

持久化对象在数据库中有相应的记录,并拥有一个持久化标识。如果使用delete()方法,持久化对象就变成临时对象,并且删除数据库中相对应的记录,这个对象和数据库不再有任何关联。

当一个Session执行close()或者clear()evict()之后,持久化对象就变为脱管对象,这时对象的id虽然拥有数据库的识别值,但已经不在Hibernate持久层的管理之下,它和临时对象基本上是一样的,只不过比临时对象多了数据库的标识id值。在没有任何变量引用此对象的情况下,JVM可能将其回收。

3)脱管状态

Session关闭之后,与此Session相关联的持久化对象就变为脱管对象,可以继续对这个对象做修改。如果脱管对象被从新关联到某个新的Session上,会在此转成持久对象。

脱管对象拥有数据库的标识id,所以它可以通过update()saveOrUpdate()等方法,再次与持久层关联。

 

 

1.5 Hibernate持久化类

什么是ORMORM的全称是Object/Relation Mapping即对象/关系映射。ORM在单独的持久化层,由ORM中间件对数据细节访问进行封装。ORM可以通过映射来实现对数据操作转换为对象的操作。

对象指使用的编程语言是面向对象的,而关系则指使用的数据库是关系型数据库。对象/关系映射则是指完成面向对象语言到关系型数据库的映射,通过映射后,我们可以像操作对象一样来操作我们的数据库。

Hibernate开发,通过创建一个持久化类来映射一个数据库表。其中持久化类的属性则映射到数据库表中的字段。当我们使用面向对象的方式来操作持久化对象时,ORM框架能自动将这些操作转换成SQL语句,从而完成对数据库的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值