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

2023-11-05 07:08

本文主要是介绍hibernate简介(Session,几种状态,方法······等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • Hibernate是什么?

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

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

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

    • Hibernate,开源 ORM 框架,广泛使用(使用最广泛)
    • iBATIS,开源,由ASF维护,并且有 .NET移植(使用的也较广泛)
    • TopLink,由Oracle开发
    • Cayenne,Apache,java 开源
    • QuickDB ORM,开源 ORM 框架 (GNU LGPL)
    • Java Data Objects (JDO)
    • Java Persistence API (JPA)
    • JPOX,开源 JDO 2 参考实现
    • Object Relational Bridge (Apache OJB),一个Java的对象关系映射器
    • OpenJPA,Apache,开源,支持 JPA API
    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向程序提供操纵数据库的最主要接口,是单线程对象,它提供了基本的保存、更新、删除和查询方法。它有一个缓存,保存了持久化对象,当清理缓存时,按照这些持久化对象同步更新数据库。

    注意:session的某些方法(persist,load)不会立即把改动写入数据库,而是缓存到session的一级缓存中,除非显示调用flush,或者关闭session时才会更新到数据库

    1. 瞬时状态(Transient):没与session关联
    2. 持久状态(Persistent):与session关联,没close
    3. 脱管状态(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.映射关系

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

这篇关于hibernate简介(Session,几种状态,方法······等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348238

相关文章

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数