百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Java方向Hibernate5.0使用教程(一)

toyiye 2024-06-21 12:17 9 浏览 0 评论


苟耀:蜗牛学院高级讲师,11年Java开发和教学经验。专攻Java Web开发,具备全栈开发能力,精通JavaScript、Bootstrap、jQuery、Mybatis、SpringMVC、Spring、Springboot、Mysql等Web开发相关技术,对框架底层原理有深入的理解。授课风趣幽默, 注重逻辑善于从技术原理出发,授之以渔。


Hibernate简介




ORM:对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。


Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。


Hibernate的优点:

1.将对数据库的操作转换为对Java对象的操作,从而简化开发。通过修改一个“持久化”对象的属性从而修改数据库表中对应的记录数据。

2.提供线程和进程两个级别的缓存提升应用程序性能。

3.有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。

4.屏蔽不同数据库实现之间的差异。在Hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句。

5.非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类,POJO即可。


核心API:

1.Configuration类

Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。


2.SessionFactory接口

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。


3.Session接口

Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。注意,Hibernate的session不同于JSP应用中的HttpSession。


4.Transaction接口

Hibernate封装的事务接口,通过接口可以管理JDBC事务。


5.Query接口

Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。


6.Criteria接口

Criteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。值得注意的是Criteria接口也是轻量级的,它不能在Session之外使用。



Hibernate入门案例



使用Hibernate5搭建Hibernate开发环境步骤如下:

1.去Hibernate官网下载Hibernate开发包,下载地址如下:

https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.4.2.Final/hibernate-release-5.4.2.Final.zip/download


2.下载完成之后解压所得到的的目录如下

documentation:开发文档

lib:Hibernate提供的jar包以及Hibernate有可能用到的一些其他第三方的依赖包。

project:Hibernate源码

3.新建java项目将lib文件夹中required目录中的所有包导入到项目中。

4.导入对应的数据库jdbc驱动包

5.在src目录下新建hibernate.cfg.xml,该文件为hibernate核心文件主要用于配置Hibernate的相关信息。

6.在hibernate.cfg.xml文件中导入dtd校验文件,dtd文件主要用于规范和校验xml文件中的内容,Hibernate 核心配置文件的dtd处于org.hibernate包下,复制dtd文件中的DOCTYPE部分到xml文件中即可。

7.在hibernate.cfg.xml文件中配置数据库连接信息(基础),具体配置如下图:


上图所示中的各项hibernate属性解释(属性名称一定要写正确且区分大小写)

connection.driver_class:数据库驱动类

connection.url:数据库连接地址

connection.username:数据库用户名

connection.password:数据库密码

dialect:方言

current_session_context_class:配置Session对象的存储容器

show_sql:设置为true时,将会在控制台打印出执行的sql语句,利于调试

format_sql:设置为true时,将会格式化sql语句然后在输出

hbm2ddl.auto:根据实体类自动创建|更新|验证数据库表结构(正向工程),可选值有:

create:每次加载Hibernate时,会先删除原来的表,然后重新创建新表

create-drop:每次加载Hibernate时会创建表,SessionFactory关闭时自动删除表

update:每次加载Hibernate时如果表不存在则创建表,如果表存在但是字段信息不正确则会更新字段信息(Hibernate只能保证实体类的属性在表中都找得到对应的字段)

validate:每次加载Hibernate时都会检查实体类和数据库是否一致,如果字段不一致则更新字段,但是不会创建表。

none:不进行正向工程


8.创建实体类并配置实体类映射信息

在Hibernate中配置实体类映射信息有两种方式,配置文件版和注解版,注解版使用更加便捷,推荐大家使用注解版。

以下以学生信息(Student)类举例:

新建实体类Student,并在类和属性上添加对应注解,如下图:

上述使用到的注解解释:

@Entity:表示当前类为一个实体类,Hibernate将会扫描该类上的注解

@Table:配置数据库表的信息,通过该注解可以配置实体类映射的表名以及一些其他额外信息

@Id:主键映射信息,用来标注当前实体类属性对应的列作为表的主键

@GeneratedValue:配置主键生成方式

@Column:配置实体类属性映射的列名,@Column注解中属性较多,以下为重要属性详情:

name:定义了被标注字段在数据库表中所对应字段的名称

unique:表示该字段是否为唯一标识,默认为false。如果为true则会添加唯一约束,如果表中有一个字段需要唯一标识,则既可 以使用该标记

nullable:表示该字段是否可以为null值,默认为true,如果为false则会添加非空约束。

length:表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。

9.将所有需要进行对象关系映射的实体类类名在hibernate.cfg.xml中告知给Hibernate

10.新建测试类,获取Session连接,新增一条数据到数据库

每个大版本获取SessionFactory的方式不尽相同,最好的方式是大家自己查看下载的Hibernate开发文档,有对应的示例代码。

以5.0版本为例:

Configuration config = new Configuration() ;config.configure();SessionFactory sessionfactory = config.buildSessionFactory();Session session = sessionfactory.openSession();

蜗牛学院最新开班时间:

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码