分享知识-快乐自己:Hibernate框架常用API详解
1):Configuration配置对象
Configuration用于加载配置文件。
1): 调用configure()方法,加载src下的hibernate.cfg.xml文件
Configuration conf = new Configuration().configure();
2):如果配置文件不符合默认的加载规则,我们可以用:
new Configuration().configure(file); //通过file加载
new Configuration().configure(path); //通过路径加载
3): 通过Configuration对象加载映射文件(不推荐,一般都将*hbm.xml映射文件配置到hibernate.cfg.xml中)
conf.addClass(User.class);
规范:1、orm映射文件名称应与实体的简单类名一致;
2、orm映射文件需要与实体的类在同一包下。
2):SessionFactory工厂
SessionFactory相当于javaWeb的连接池,用于管理所有的session
根据Configuration配置信息创建SessionFactory
SessionFactory sf = conf.buildSessionFactory();
SessionFactory是线程安全的,可以是成员变量,多个线程同时访问时,不会出现线程并发的问题。
3):Session会话
Session相当于JDBC的Connection会话,通过操作session操作PO对象实现增删改查
session的api:
1、save 保存
2、update 更新
3、delete 删除
4、get 通过id查询,如果没有null
load通过id查询,如果没有抛异常
5、createQuery("hql") 获得Query对象
6、createCriteria(Class) 获得Criteria对象
session是单线程,线程不安全,不能编写成员变量。
4):Transaction事务
打开事务: Transaction ts = session.beginTransaction();
获得事务(已经打开的事务对象):session.getTransaction();
提交事务:commit();
回滚事务:rollback();
5):Query对象
Qyuery主要用于Hibernate执行hql语句。
hql语句:hibernate提供的面向对象的查询语句,使用对象(类)和属性进行查询,区分大小写。
获得Query对象:Query query = session.createQuery("hql")
方法:
list():查询所有 List<User> list = query.list();
uniqueResult():获得一个结果
setFirstResult(int):分页,开始索引数startIndex
setMaxResult(int):分页,每页显示的个数pageSize
6):工具类
package com.zju.model; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; //工具类
public class H3Utils { // 会话工厂,整个程序只有一份
private static SessionFactory factory; // 放在静态块里
static {
// 1 加载配置文件
Configuration conf = new Configuration().configure();
// 2 获得工厂
factory = conf.buildSessionFactory();
// 3 关闭虚拟机时,释放SessionFactory
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override
public void run() {
System.out.println("虚拟机关闭,释放资源!");
factory.close();
}
}));
} // 获得一个新的session
public static Session openSession() {
return factory.openSession();
} //获得当前线程中绑定的session
public static Session getCurrentSession(){
return factory.getCurrentSession();
}
}
分享知识-快乐自己:Hibernate框架常用API详解的更多相关文章
- hibernate常用API详解
根据个人使用Hibernate的经验,介绍一下Hibernate的多种不同的查询和CUD操作,这些东西在日常开发中非常常用,希望对大家有所帮助. 以下示例均以两张表为例:member和userinfo ...
- Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢
新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...
- 分享知识-快乐自己:Java常用API总结
1):java.io.BufferedReader类(用于从文件中读入一段字符:所属套件:java.io) 1. 构造函数BufferedReader(java.io.FileReader FileR ...
- Selenium常用API详解介绍
转至元数据结尾 由 黄从建创建, 最后修改于一月 21, 2019 转至元数据起始 一.selenium元素定位 1.selenium定位方法 2.定位方法的用法 二.控制浏览器操作 1.控制 ...
- [总结]JS操作DOM常用API详解
文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...
- Hibernate框架之Criteria 详解
自从学数据库以来,从SQL查询-HQL查询-到Criteria 查询.有人问我:掌握一种查询语句不就可以吗,为什么还要学Criteria 查询?我回答道:用到特定于数据库的SQL 语句,程序本身会依赖 ...
- 分享知识-快乐自己:Spring_IOC(控制反转)详解
IoC是什么: 1):Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. 2):在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的 ...
- 分享知识-快乐自己:oracle表分区详解
从以下几个方面来整理关于分区表的概念及操作: 1)表空间及分区表的概念: 2)表分区的具体作用: 3)表分区的优缺点: 4)表分区的几种类型及操作方法: 5)对表分区的维护性操作: 1):表空间及分区 ...
- hibernate学习(2)——api详解对象
1 Configuration 配置对象 /详解Configuration对象 public class Configuration_test { @Test //Configuration 用户 ...
随机推荐
- Nginx配置文档具体解释
Nginx的配置文档具体解释.在这儿做个总结,以便以后使用的时间查看. 下面大部分自己整理.部分来自參考 #设置用户 #user nobody; #启动进程数(一般和server的CPU同样) #能 ...
- 身份证识别接口编写的JAVA调用示例
此java文章是基本聚合数据证件识别接口来演示,基本HTTP POST请求上传图片并接收JSON数据来处理. 使用前你需要通过 https://www.juhe.cn/docs/api/id/153 ...
- Chrome 插件 CrxMouse 去除后门优化版
说明 CrxMouse 是一款挺不错的 Chrome 插件.仅仅是据说这个插件会在后台偷偷的上传用户的浏览数据,无论上传的内容是不是涉及隐私数据,总让人认为不放心,可是因为插件本身功能还是挺好用的,所 ...
- 两个栈来实现一个队列的C++代码
利用两个栈来实现一个队列, 这个问题非经常见. 最关键的是要有好的思路, 至于实现, 那是非常easy的事情了. 在本文中, 也想说说自己的思路, 可是. 我认为用代码来表述思路更符合我的习惯. 也 ...
- Hibernate学习三----------session详解
© 版权声明:本文为博主原创文章,转载请注明出处 如何获取session对象 1. openSession 2. getCurrentSession - 如果使用getCurrentSession需要 ...
- charles 4.x 破解版安装 以及使用
下载地址 https://pan.baidu.com/s/1dFvYM7B 破解方法 未破解的情况下,每30分钟会弹出一个提示,然后关闭软件 将压缩包内的 charles.jar 复制到安装目录下,替 ...
- 在WPF对话框中如何验证用户提供的数据
在WPF中,MS在msdn的WPF应用程序开发中对用户输入的数据验证做了示范,基本思想就是添加各种类型的校验规则,比如最大最小值.字符串长度.是否为空等等,在后在界面绑定数据时添加数据字段的校验.这样 ...
- C#中图片.BYTE[]和base64string的转换
在C#中 图片到byte[]再到base64string的转换: Bitmap bmp = new Bitmap(filepath); MemoryStream ms = ...
- phthon 基础 7.3 logging 日志模块
一. logging 的使用 日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改.python有给我们开发者提供好的日志模块,下面我们就来介绍一下logging ...
- PHP购物车模块的实现(php/ajax/session)
购物车网页代码 1.登录界面login.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...