浅析java程序中hibernate的应用总结

 更新时间:2013年07月22日 11:12:47   作者:  
hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,而数据库返回来的信息hibernate接收之后直接生成一个对象传给java

我们知道如果用java连接数据库,大量的SQL代码,我们就想通过一种工具来操作数据库,
我们首先想到的就是JDBC,但是想更好的针对类的属性进行操作,我们会选择Hibernate。

那么Hibernate 原理是什么呢?
hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,
而数据库返回来的信息hibernate接收之后直接生成一个对象传给java。

一  首先我们先了解一下hibernate的工作7个流程:
1.读取并解析配置文件  
2.创建SessionFactory
3.打开Session
4.开始一个事物
5.持久化操作
6.提交事务
7.关闭Session

二 接着我们要理解实体对象的生命周期是Hibernate 的三种状态
瞬时状态(Transient)
刚用new语句创建,还没有被持久化,且不处于Session的缓存中
持久状态(Persistent)
已经被持久化,且加入到Session的缓存中
游离状态(Detached)
已经被持久化,但不再处于Session的缓存中

三  持久化和ORM也是Hibernate中需要理解的一部分。
持久化:数据模型(内存)《--》存储模型(持久化设备),在Java中说持久化,通常指的是使用SQL将数据存储在关系型数据库中。
ORM是持久化的一种解决方案,主要是把对象模型和关系型数据库关系模型映射起来,并且使用元数据对这些映射进行描述。

Hibernate中必须要搭建项目框架编写hibernate配置文件、实体映射文件
创建项目并导入jar包
创建Hibernate配置文件  
用于配置数据库连接
运行时所需的各种属性

默认文件名为“hibernate.cfg.xml”
测试连接
使用Hibernate完成数据增删改操作
1.创建实体类
2.创建和配置映射文件
3.主键映射
4.主键生成策略
5.在主配置文件中添加实体映射文件路径
6.数据库操作
7.单表增删改查

四 Hibernate 支持两种主要的查询方式
(1)HQL(Hibernate Query Languge,Hibernate 查询语言)
查询
是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念
HQL 是应用较为广泛的方式。

(2) Criteria 查询
又称为“对象查询”,它用面向对象的方式将构造查询的过程做了封装。

五 在运用Hibernate时,我们应该注意一些事情
(1)Hibernate是如何延迟加载?
    1.Hibernate延迟加载实现:a)实体对象 b)集合(Collection)
    2.Hibernate3提供了属性的延迟加载功能
当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

(2)说下Hibernate的缓存机制
    1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存
    2. 二级缓存: 
       a) 应用及缓存 
       b) 分布式缓存 
   条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、
        非关键数据 
       c) 第三方缓存的实现

相关文章

  • Spring Boot整合Spring Data Jpa代码实例

    Spring Boot整合Spring Data Jpa代码实例

    这篇文章主要介绍了Spring Boot整合Spring Data Jpa代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java IO流将一个文件拆分为多个子文件代码示例

    java IO流将一个文件拆分为多个子文件代码示例

    这篇文章主要介绍了java IO流将一个文件拆分为多个子文件代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Java使用枚举实现状态机的方法详解

    Java使用枚举实现状态机的方法详解

    这篇文章主要介绍了Java使用枚举实现状态机的方法详解,枚举类型很适合用来实现状态机,状态机可以处于有限数量的特定状态,它们通常根据输入,从一个状态移动到下一个状态,但同时也会存在瞬态,需要的朋友可以参考下
    2023-11-11
  • Java8新特性Lambda表达式的一些复杂用法总结

    Java8新特性Lambda表达式的一些复杂用法总结

    lambda表达式是JAVA8中提供的一种新的特性,它支持Java也能进行简单的“函数式编程”。 下面这篇文章主要给大家介绍了关于Java8新特性Lambda表达式的一些复杂用法的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • Java出现中文乱码问题分析及解决方案

    Java出现中文乱码问题分析及解决方案

    在Java开发中,处理中文乱码是一个常见的问题,由于字符集和编码的复杂性,开发者可能面临各种导致乱码的情况,正确地处理中文字符集对于确保应用程序的可靠性和国际化至关重要,本文给大家介绍了Java中文乱码分析及解决方案,需要的朋友可以参考下
    2024-02-02
  • Java设计模式之观察者模式

    Java设计模式之观察者模式

    这篇文章主要介绍了Java设计模式之观察者模式,观察者模式,是一种行为性模型,又叫发布-订阅模式,他定义对象之间一种一对多的依赖关系,使得当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新,需要的朋友可以参考下
    2023-11-11
  • Java双重校验锁单例原理

    Java双重校验锁单例原理

    大家好,本篇文章主要讲的是Java双重校验锁单例原理,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Mybatis的SqlRunner执行流程实现

    Mybatis的SqlRunner执行流程实现

    MyBatis提供了一个用于操作数据库的SqlRunner工具类,对JDBC做了很好的封装,本文主要介绍了Mybatis的SqlRunner执行流程实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 利用Java编写24点小游戏的实例代码

    利用Java编写24点小游戏的实例代码

    这篇文章主要给大家介绍了关于如何利用Java编写24点小游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • java中删除文件/文件夹的3种方法示例小结

    java中删除文件/文件夹的3种方法示例小结

    这篇文章主要介绍了java中删除文件/文件夹的3种方法示例小结,第一种是通过io删除文件,第二种是通过Files.walk删除文件,第三种是通过 Files.walkFileTree删除文件,本文结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-10-10

最新评论