我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Hibernate的基本用法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Hibernate的基本用法有哪些

本篇内容主要讲解“Hibernate的基本用法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate的基本用法有哪些”吧!

基本Hibernate数据查询

使用Hibernate数据查询是一件简单的事,Java程序设计人员可以使用对象操作的方式来进行数据查询,查询时使用一种类似SQL的HQL(Hibernate Query Language)来设定查询的条件,与SQL不同的是,HQL是具备对象导向的继承、多型等特性的语言。直接使用范例来看看如何使用Hibernate进行数据库查询,在这之前,请先照之前介绍过的主题在数据库中新增几笔数据:在Hibernate中新增资料查询数据时,我们所使用的是Session的find()方法,并在当中指定HQL设定查询条件,查询的结果会装载在List对象中传回,您所需要的是将它们一一取出,一个最简单的例子如下:

HibernateTest.java

import onlyfun.caterpillar.*;import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;import java.util.*; public class HibernateTest {public static void main(String[] args) throws HibernateException {SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();List users = session.find("from User");session.close();sessionFactory.close();for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {User user = (User) iterator.next();System.out.println(user.getName() +"\n\tAge: " + user.getAge() +"\n\tSex: " + user.getSex());}}}

find()中的“from User”即HQL,User指的是User类别,藉由映射文件,它将会查询USER表格中的数据,相当于SQL中的SELECT * FROM USER,实际上我们的User类别是位于onlyfun.caterpillar下,Hibernate会自动看看import中的package名称与类别名称是否符合,您也可以直接指定package名称,例如:

session.find("from onlyfun.caterpillar.User");

这个程序的运行结果可能是这样的:

log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, user0_.age as age from USER user0_caterpillarAge: 28Sex: MmomorAge: 25Sex: FBushAge: 25Sex: MBeckyAge: 35Sex: F

上面所介绍的查询是最简单的,只是从数据表中查询所有的数据,Hibernate所查询得回的数据,是以对象的方式传回,以符合程序中操作的需要,我们也可以限定一些查询条件,并只传回我们指定的字段,例如:

List names = session.find("select user.name from User as user where age = 25");for (ListIterator iterator = names.listIterator(); iterator.hasNext(); ) {String name = (String) iterator.next();System.out.println("name: " + name);}

在find()中的HQL示范了条件限定的查询,User as user为User类别取了别名,所以我们就可以使用user.name来指定表格传回字段,where相当于SQL中的WHERE子句,我们限定查询age等于25的数据,这次查询的数据只有一个字段,而型态是String,所以传回的List内容都是String对象,一个运行的例子如下:

log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.name as x0_0_ from USER user0_ where (age=25 )name: momorname: Bush

如果要传回两个以上的字段,也不是什么问题,直接来看个例子:

List results = session.find("select user.name, user.age from User as user where sex = 'F'");for (ListIterator iterator = results.listIterator(); iterator.hasNext(); ) {Object[] rows = (Object[]) iterator.next();String name = (String) rows[0];Integer age = (Integer) rows[1];System.out.println("name: " + name + "\n\t" + age);}

从上面的程序中不难看出,传回两个以上字段时,每一次ListIterator会以Object数组的方式传回一笔数据,我们只要指定数组索引,并转换为适当的型态,即可取得数据,一个查询的结果如下:

log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.name as x0_0_, user0_.age as x1_0_ from USER user0_ where (sex='F')name: momor25name: Becky35

您也可以在HQL中使用一些函数来进行结果统计,例如:

List results = session.find("select count(*), avg(user.age) from User as user");ListIterator iterator = results.listIterator();Object[] rows = (Object[]) iterator.next();System.out.println("资料笔数: " + rows[0] + "\n平均年龄: " + rows[1]);

一个查询的结果如下所示:

log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select count(*) as x0_0_, avg(user0_.age) as x1_0_ from USER user0_资料笔数: 4平均年龄: 28.25

unsaved-value

可以设定的值包括:

◆any - 总是储存

◆none - 总是更新

◆null - id为null时储存(预设)

◆valid - id为null或是指定值时储存

这样设定之后,您可以使用session.saveOrUpdate(updated);来取代上一个程序的session.update(updated);方法。

如果要删除数据,只要使用delete()方法即可,直接看个例子。

HibernateTest.java

import onlyfun.caterpillar.*;import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;import java.util.*;public class HibernateTest {public static void main(String[] args) throws HibernateException {SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();  List users = session.find("from User");User updated = null;for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {User user = (User) iterator.next();if(updated == null)updated = user;      System.out.println(user.getName() +"\n\tAge: " + user.getAge() +"\n\tSex: " + user.getSex());}session.delete(updated);users = session.find("from User");session.close();sessionFactory.close();for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {User user = (User) iterator.next();            System.out.println(user.getName() +"\n\tAge: " + user.getAge() +"\n\tSex: " + user.getSex());}       }}

一个执行的结果范例如下:

log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, ser0_.age as age from USER user0_justinAge: 28Sex: MmomorAge: 25Sex: FBushAge: 25Sex: MBeckyAge: 35Sex: FHibernate: delete from USER where user_id=?Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, ser0_.age as age from USER user0_momorAge: 25Sex: FBushAge: 25Sex: MBeckyAge: 35Sex: FUser user = (User) session.load(User.class, id);

Hibernate对于数据的更新、删除等动作,是依赖id值来判定,如果您已知id值,则可以使用load()方法来加载资料。

到此,相信大家对“Hibernate的基本用法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Hibernate的基本用法有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Hibernate的基本用法有哪些

本篇内容主要讲解“Hibernate的基本用法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate的基本用法有哪些”吧!基本Hibernate数据查询使用Hibernate数据
2023-06-17

Hibernate基础知识有哪些

这篇文章主要讲解了“Hibernate基础知识有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate基础知识有哪些”吧!Hibernate是JDBC的升级版,专用连接数据库。
2023-06-17

vps基本用法有哪些

VPS(Virtual Private Server)是一种在物理服务器上划分出的虚拟服务器,具有独立的操作系统、独立的资源和独立的管理权限。下面是VPS基本用法的几个方面:1. 网站托管:可以将网站文件和数据库等数据部署在VPS上,通过域
2023-08-11

Python Matplotlib基本用法有哪些

今天小编给大家分享一下Python Matplotlib基本用法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Matp
2023-07-05

Hibernate基础知识点有哪些

这篇文章主要介绍“Hibernate基础知识点有哪些”,在日常操作中,相信很多人在Hibernate基础知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate基础知识点有哪些”的疑惑有所
2023-06-17

Hive的基本使用方法有哪些

这篇文章主要介绍“Hive的基本使用方法有哪些”,在日常操作中,相信很多人在Hive的基本使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hive的基本使用方法有哪些”的疑惑有所帮助!接下来,请跟
2023-06-27

vim的基本使用方法有哪些

本文小编为大家详细介绍“vim的基本使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“vim的基本使用方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Vim(Vi[Improved])编辑器是
2023-06-27

java中static的基本用法有哪些

在Java中,static关键字有以下几个基本用法:1. 静态变量:使用static修饰的变量称为静态变量,也叫类变量。静态变量在程序启动时就会被创建,不依赖于任何对象实例。可以通过类名直接访问。2. 静态方法:使用static修饰的方法称
2023-09-04

Git的基本使用方法有哪些

这篇文章主要介绍了Git的基本使用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管
2023-06-27

MySQL的基本使用方法有哪些

今天小编给大家分享一下MySQL的基本使用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。MySQL 是最流行的关系
2023-06-27

TypeScript基本的语法有哪些

本篇内容主要讲解“TypeScript基本的语法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TypeScript基本的语法有哪些”吧!前端那么多酷炫的东西,真是太好玩了。但是,JavaS
2023-06-16

netstat基本使用方法有哪些

本文小编为大家详细介绍“netstat基本使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“netstat基本使用方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。netstat命令是一个监控T
2023-06-27

Dockerfile基本使用方法有哪些

本篇内容主要讲解“Dockerfile基本使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Dockerfile基本使用方法有哪些”吧!Dockerfile的组成Dockerfile分
2023-06-28

SQLite3基本使用方法有哪些

本文小编为大家详细介绍“SQLite3基本使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQLite3基本使用方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、基本语法1.常用指令.op
2023-07-02

Kafka基本使用方法有哪些

Kafka的基本使用方法包括以下几个方面:1. 安装和配置:首先需要在服务器上安装Kafka,并进行必要的配置,例如指定监听端口、设置存储路径等。2. 创建主题:使用Kafka提供的命令行工具或API,可以创建一个新的主题。每个主题可以有多
2023-09-13

Git基本使用方法有哪些

这篇文章主要介绍了Git基本使用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。创建版本库$ git clone #克隆远程
2023-06-27

rsync基本使用方法有哪些

这篇文章主要讲解了“rsync基本使用方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“rsync基本使用方法有哪些”吧!rsync是可以实现增量备份的工具。配合任务计划,rsync能
2023-06-27

Scala基本语法有哪些

本篇内容介绍了“Scala基本语法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!你好 HelloScala......object F
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录