hibernate简介(Session,几种状态,方法······等)

  • 1.Hibernate是什么?

             Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

      对象关系映射简称ORM(Object Relational Mapping),由于我们目前使用的编程语言大都是面向对象的编程,使用的数据库也大多都是关系型数据库,数据得以对象的形式在程序中使用,并且程序中 的有些对象(数据对象)得永久保存在数据库中,故就出现了ORM,说得更通俗点:ORM就是将数据库中的数据和程序中的对象进行互相的转换!

      如今的ORM框架可以说是很丰富的:

    2.Hibernate跟jdbc的关系

    Hibernate封装JDBC,持久化内存中的对象,同步到数据库 .

    1.关于封装,我得强调两点:

        (1).把尽可能多的东西藏起来.对外提供简捷的接口.

        (2)把所有的属性藏起来

            当然我们,我们如果能够做到单一原则就更好了

    2.关于持久化的概念

             持久化定义:将程序数据在持久状态和瞬时状态间转换的机制。

               这里讲的是Hibernate的话得讲一下中的几种状态:瞬时状态,持久状态,脱管状态

    1. 瞬时状态(Transient):指一个对象在内存中开辟空间.如 User user=new User();此时user对象就是瞬时状态的.
    2. 持久状态(Persistent):数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。可以以文件,数据库以及xml等形式.
    3. 脱管状态(Detached):当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。  

    这里我想总结一点关于瞬时状态和持久状态:瞬时态就是存在于内存中的,如果电脑关了后,再启动,之前在内存中的对象已经不在了,如果持久状态的话,保存在磁盘上的数据对象,当需要时还是可以加载到内存中,不会因电脑的启动而受到影响!

    3.Session

    Session接口是Hibernate向程序提供操纵数据库的最主要接口,

  • 瞬时状态(Transient):没与session关联
  • 持久状态(Persistent):与session关联,没close
  • 脱管状态(Detached):当session.close后

4.Session的方法详解

1.保存

svae:立即插入数据库,并且返回主键

persist:不立即(延迟)插入数据库,无返回值

2.获取

load:加载对象后,对对象的改动不会立即刷新到db,必须flush到db

ex: User user=session.load(User.class,2);

user.setName(‘gt‘);

user.flush();   (延迟加载)

get:加载对象后,对对象的改动立即刷新到db

3.更新

update:持久化对象,更新

saveOrUpdate:包含save()和update()功能,如果传入的参数是临时对象(没有保存过)就调用save()方法;如果传入的参数是游离对象,就调用update()方法

merge:不会持久化对象,只会把托管对象的修改更新到db

4.删除

delete:从数据库中删除与JAVA对象对应的记录

5.清理

flush:把缓存同步到db

clear:清除session的缓存大小(更新批量时,应考虑)

5.映射关系

详见博客内单独介绍的文章

时间: 2024-10-29 19:09:54

hibernate简介(Session,几种状态,方法······等)的相关文章

hibernate对象的三种状态及转换

hibernate对象的三种状态转换关系图 三种状态 瞬时状态(transient): 通过new创建对象后,对象并没有立刻持久化,  它并未参与数据库中的数据有任何的关联,此时java对象的状态为瞬时状态.session对瞬时状态的对象一无所知,当对象不再被引用时,她的数据也就丢失了, 对象将会被java虚拟机按照垃圾回收机制处理. 持久状态(persistent): 当对象与session关联,被session管理时,它就处于持久化状态.处于持久状态的对象拥有数据库的标志.对象什么时候与se

hibernate对象的几种状态

Hibernate 对象的几种状态 临时状态(Transient):new 出来的对象.  对象无 id,缓存和数据库中均没有 游离状态(Detached):内存中有,缓存中没有,数据库中有 id 持久化状态(Persistent):内存,缓存,数据库中均有 id 删除状态: 例: 未入职前   -----> -----> ----> ---->  临时 入职后      -----> -----> ----> ---->  持久化 请假      ----

Hibernate对象的三种状态

hibernate中对象的状态有三种:临时态(Transient).持久态(Persistent)和游离态(Detached),三种状态转化的方法都是通过session来调用的,处于三种状态下的对象所具有的特点,总结如下: 临时态:没有被session管理 在数据库中没有与之匹配的记录; 持久态:纳入session管理 在数据库中有与之匹配的记录 当属性发生变化,在清理缓存时(脏数据检查)会自动和数据库同步; 游离态:没有被session管理 在数据库中存在与之匹配的记录. 临时态到持久态的方法

hibernate映射对象三种状态的分析

一,首先hibernate中对象的状态有 三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate(). get().load():持久态到瞬态的方法有delete():游离态到持久态的方法有update().saveOrUpdate(). lock():持久态到游离态的方法有:session.close().session.evict().session.clear(). 二,Hibernate的状态 hiberna

Hibernate 对象的三种状态

对象在第一种状态 Teacher t = new Teacher(); t.setName(“张三”); t.setAge(35); Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); 对象在第二种状态 session.save(t); session.getTransaction().commit(); 对象在第三种状态,在commit之后. 1.transient: 内存中新new

hibernate持久化对象三种状态及其转换

持久化类类三种状态介绍1. 瞬时态:也叫做临时态或自由态,它一般指我们 new 出来的对象,它不存在 OID, 与 hibernate session 无关联,在数据库中也无记录.它使用完成后,会被 jvm 直接 回收掉,它只是用于信息携带.简单说:无 OID 与数据库中的信息无关联,不在 session 管理范围内.2. 持久态:在 hibernate session 管理范围内,它具有持久化标识 OID 它的特点,在事 务未提交前一直是持久态,当它发生改变时, hibernate 是可以检测

Hibernate中Session的几个方法的简单说明

Hibernate对普通JDBC的操作进行了轻量级的封装,使得开发人员可以利用Session对象以面向对象的思想来实现对关系数据库的操作. 一般通过Configuration对象读取相应的配置文件来创建SessionFactory,然后通过SessionFactory对象获取Session对象,获取Session对象之后,我们就可以相关数据的操作了. 下面来介绍一下Session对象的几种方法: 1.Session.save() Session.save(Object obj):把瞬时状态对象o

hibernate实体的几种状态:

实体的生命周期中,实体主要经过瞬时(Transient),托管(Attatched或Managed),游离(Detached)和销毁(Removed)四个状态. 瞬时状态:是指对象被new之后尚未保存到数据库,一旦服务器停止,JVM会回收它所占的内存资源,此时对象没有与session关联. 托管状态:在数据库中已有数据与之对应,且与session相关联.实体状态转换到托管状态的方法:  A.调用persist(),实体从游离转变到托管,最后变成持久化状态.   B.调用find()或Query执

Hibernate对象的三种状态是什么?

瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object). 瞬时态 由new命令开辟内存空间的java对象, eg. Person person = new Person(”amigo”, “女”); 如果没有变量对该对象进行引用,它将被java虚拟机回收. 瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在H

hibernate缓存,四种状态

FlushMode.AUTO:Hibernate判断对象属性有没有改变,是默认的清理模式 FlushMode.COMMIT:在事务结束之前清理Session的缓存,其他任何时候都不清理缓存 FlushMode.NEVER:除非强制调用Session.flush(),或则永不清理缓存.所作的修改只限与内存 FlushMode.ALWAYS:在每一个查询语句前都调用flush()进行缓存管理,这种模式经常不必要并且低效的. 1.瞬时状态 也就是实体对象处于new的状态 它是在session缓存区中不