Hibernate框架第一课
Hibernate的配置
1.导入框架(12个包)
链接: https://pan.baidu.com/s/1615Kgnk54CySKAL9ZSu1ig 密码: pbud 可以下载需要的jar包
hibernate-release-5.2.10.Final/lib/下的文件夹
required文件夹下的所有包(10个)
jpa-metamodel-generator文件夹下的包(1个)
mysql的驱动包(1个)
2.创建Hibernate的主配置文件
默认放在src下
文件名字默认 hibernate.cfg.xml
3.创建实体类
建议: 对象的属性名和需要链接的数据库表中字段名相同
4.创建与实体类对应的配置文件
文件名规范: 实体类名.hb.xml
作用: 配置实体类与数据库表的映射关系
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 映射表跟对象的关系 -->
<hibernate-mapping package="com.lanou3g"><!-- 配置表与实体类的关系package: 填包名 填上后 底下再写全类名可以省略包名name: 实体类的全类名table: 表名--><class name="User" table="user"><!-- id: 表示主键注意: 没有主键不能使用hibernatename: 表示类中的成员变量(属性)名column: 表示这个成员变量所代表的表中的字段名--><id name="id" column="id"><!-- 主键的生成策略 主键自增策略 --><generator class="native"></generator></id><!-- property: 表示主键以外的属性--><property name="username" column="username"></property><property name="password" column="password"></property></class>
</hibernate-mapping>
5.从主配置文件中配置映射文件的路径
<!-- 映射数据库表对应的 映射文件的路径注意: 路径从包名开始 并且 中间使用的是反斜杠相隔 例如: -->
<mapping resource="com/lna/User.hbm.xml"/>
Hibernate的增删改查
hibernate书写的步骤:
ensample: 插入(增)
1.读取主配置文件
Configuration configuration = new Configuration().configure();
默认读取src下的 hibernate.cfg.xml文件
2.创建session工厂
相当于数据库连接池 管理session,通过session对象来操作数据库
SessionFactory sessionFactory = configuration.buildSessionFactory();
3.获取session对象
openSession() 从session工厂中获取一个全新的session对象
Session session = sessionFactory.openSession();
4.开启事务
Transaction transaction = session.beginTransaction();
5.操作数据库
直接向数据库中插入一条数据---表示一个对象
User user = new User();
user.setUsername("lna");
user.setPassword("123");
将对象保存到数据库中
session.save(user);
6.提交事务
transaction.commit();
7.关闭资源
session.close();
sessionFactory.close();
删除方法
@Test
public void fun5() {// 1.读取配置主文件Configuration configuration = new Configuration().configure();// 2.创建session工厂SessionFactory sessionFactory = configuration.buildSessionFactory();// 3.获取session对象Session session = sessionFactory.openSession();// 通过session操作数据库// 4.开启事务Transaction transaction = session.beginTransaction();// 5.操作数据库// --------------------------------------// 根据id删除User user = new User();user.setId(1);session.delete(user);// --------------------------------------// 6.提交事务transaction.commit();// 7.关闭资源session.close();sessionFactory.close();
}
修改(更新)方法
@Test
public void fun4() {// 1.读取配置主文件Configuration configuration = new Configuration().configure();// 2.创建session工厂SessionFactory sessionFactory = configuration.buildSessionFactory();// 3.获取session对象Session session = sessionFactory.openSession();// 通过session操作数据库// 4.开启事务Transaction transaction = session.beginTransaction();// 5.操作数据库// --------------------------------------// 修改对象 根据id// 先把这个对象查出来User user = session.load(User.class, 1);// 修改对象的值user.setUsername("kuner");// 同步到数据库session.update(user);// --------------------------------------// 6.提交事务transaction.commit();// 关闭资源session.close();sessionFactory.close();// 找不到session对象 报错System.out.println(user);
}
查询方法
// 根据id查询
@Test
public void fun2() {// Session.get(查询对象的.class ,id); 方法// 1.读取配置主文件Configuration configuration = new Configuration().configure();// 2.创建session工厂SessionFactory sessionFactory = configuration.buildSessionFactory();// 3.获取session对象Session openSession = sessionFactory.openSession();// 通过session操作数据库// 4.开启事务Transaction transaction = openSession.beginTransaction();// 5.操作数据库User user = openSession.get(User.class,1);// 6.提交事务transaction.commit();// 关闭资源openSession.close();sessionFactory.close();System.out.println(user);
}
注意: 步骤5 可以用load方法替换
// 5.操作数据库
// --------------------------------------
// 使用load方法查询 按id查询
User user = openSession.load(User.class, 1);
// --------------------------------------
load方法和get方法的区别:
get方法 只要该方法执行 就会产生sql语句
并查询数据库返回对象
load方法 懒加载方法进行查询
load方法执行了 不会立即去查询数据库
而是 当你使用该查询结果时 才会去查询数据库
(如果这时候session释放了 会报错)
HQL语句查询
HQL语句查询 面向对象的查询方式
语句中写的东西 都是表示的实体类 或者实体类的属性
@Test
public void fun6() {// 1.读取配置主文件Configuration configuration = new Configuration().configure();// 2.创建session工厂SessionFactory sessionFactory = configuration.buildSessionFactory();// 3.获取session对象Session session = sessionFactory.openSession();// 通过session操作数据库// 4.开启事务Transaction transaction = session.beginTransaction();// 5.操作数据库// --------------------------------------// 查询数据库中的所有User对象//Query<User> query = session.createQuery("from com.lanou3g.User");// "from User" 表示查询的User对象Query<User> query = session.createQuery("from User", User.class);// 从查询的结果集中取出数据 并且取出的是个集合List<User> list = query.list();for (User user : list) {System.out.println(user);}// --------------------------------------// 6.提交事务transaction.commit();// 关闭资源session.close();sessionFactory.close();
}
也可以使用sql原生语句查询
// 5.操作数据库
// --------------------------------------
// 使用原生sql语句查询
NativeQuery<Object[]> query = session.createNativeQuery("select * from user where username=?");
// 替换占位符
// 参数1 占位符的索引 从1开始
// 参数2 要替换的值
query.setParameter(1, "wanglong");
//获取结果
List<Object[]> list = query.list();
for (Object[] objects : list) {for (Object object : objects) {System.out.print(object + " ");}System.out.println();
}
// --------------------------------------
Hibernate框架第一课相关推荐
- 杨老师课堂之JavaEE三大框架Hibernate入门第一课
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kese7952/article/details/80998421 本篇任务 1. 使用Hiberna ...
- 潭州课堂25班:Ph201805201 django框架 第一课 环境搭建 (课堂笔记)
在虚拟机中创建虚拟环 mkvirtualenv -p /usr/bin/python3 djtest mkvirtualenv 是创建命令, -p /usr/bin/python3 是指定在 pyt ...
- Hibernate学习第一天
Hibernate框架第一天 今天任务 1. 使用Hibernate框架完成对客户的增删改查的操作 教学导航 1. 能够说出Hibernate的执行流程 2. 能够独立使用Hibernate框架完成增 ...
- 【Spring】第一课 Spring框架的环境搭建和使用
概念 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单性.可测试性 ...
- SSH框架第一天——hibernate框架
什么是框架? 是软件的半成品,它已经完成了部分功能. 什么是hibernate? hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程 ...
- 初中计算机知识点结构图,初中信息技术总复习第一课 构建知识框架
(一)设计思路: 本节课的教学内容根据课标和中考的要求,在教师的帮助下,引导学生梳理教材,构建知识框架.通过分工协作.探讨交流.归纳总结,能够构建三年来学过的知识框架,以便为后期的专项复习打下基础.在 ...
- Java入门第一课 初始概念和框架
一.概述 Java项目是日常工作最常见的项目了,因此,及时作为运维人员,适当了解java相关知识,也是必要的,本文用以记录日常java相关相关知识点摘录,用以笔记及后续学习回顾. Java 是由 Su ...
- 第一课程序框架的构建——C#计算器编程教学
程序再小,它也要运行的相关功能要求,或者还有扩展需求.比如,算式中有括号怎么办?你们不要被图片中的括号诱导,其实我没实现算式中有括号的功能,那只是取反. 选择了项目,当然第一步是确定功能需求.本计算器 ...
- 三层代码讲解--第一课
主题:三层代码讲解--第一课 主持人:老吴 时间:2004-05-24 2004-05-24 10:47:00 天之痕_若虹(86278566) 請教大家一個問題好嗎 2004-05-24 10:47 ...
最新文章
- 编译原理-First集和Follow集
- pte模拟考试_【PTE懒人攻略】如何在7天内通过PTE考试
- 十种机制保护三大网络基础协议(BGP、NTP和FTP)—Vecloud微云
- mongodb中批量将时间戳转变通用日期格式
- 深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...
- 鼠标经过(hover)事件的延时处理
- (04)VTK移动模型,判断是否相交
- 《剑指offer》面试题30——最小的k 个数
- 【Unity3D插件】PUN 2插件分享《Unity3D多人在线联机联网插件》——客户端服务器端一体
- Git下载与安装 Windows
- 小白学习MySQL - 表空间碎片整理方法
- FAT32、NTFS、exFAT格式的区别
- 出场顺序很重要下一句_年少有为一夜刷爆朋友圈:人生的出场顺序真的很重要...
- 主域名跳转到带www的域名方法,以及对seo有什么影响?
- php ci log,PHP框架CI CodeIgniter 的log_message开启日志记录方法
- 【PyTorch】Optim 优化器
- 【超级干huo】用c语言制作游戏地图【可自定义】
- php inpo,优化PHP in_array()函数,效率提高50倍
- 第一个被赋予公明身份的机器人_史上首次 沙特授予“女性”机器人索菲娅公民身份...
- oracle 查看表空间使用情况
热门文章
- shopify开发经验
- 微信赚钱,应用开放平台
- 【抽象代数】素理想、极大理想、唯一析因环、主理想整环、欧几里得环
- html下拉框动态增加成员,JavaScript实现左右下拉框动态增删示例
- php解析m3u8代码,PHP解码转发M3U8 PHP读取转发M3U8的方法
- proxmox换源_Proxmox VE 5.4升级到Proxmox VE 6(中国源加速)
- B_随笔_关于网站记录(2)
- linux shell 看门狗,Linux 下如何使用看门狗
- 保护终端信息安全的意义何在?
- 2018年上半年网络工程师综合试题视频解析-乔俊峰-专题视频课程