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框架第一课相关推荐

  1. 杨老师课堂之JavaEE三大框架Hibernate入门第一课

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kese7952/article/details/80998421 本篇任务 1. 使用Hiberna ...

  2. 潭州课堂25班:Ph201805201 django框架 第一课 环境搭建 (课堂笔记)

    在虚拟机中创建虚拟环 mkvirtualenv -p /usr/bin/python3 djtest mkvirtualenv 是创建命令, -p /usr/bin/python3  是指定在 pyt ...

  3. Hibernate学习第一天

    Hibernate框架第一天 今天任务 1. 使用Hibernate框架完成对客户的增删改查的操作 教学导航 1. 能够说出Hibernate的执行流程 2. 能够独立使用Hibernate框架完成增 ...

  4. 【Spring】第一课 Spring框架的环境搭建和使用

    概念 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单性.可测试性 ...

  5. SSH框架第一天——hibernate框架

    什么是框架? 是软件的半成品,它已经完成了部分功能. 什么是hibernate? hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程 ...

  6. 初中计算机知识点结构图,初中信息技术总复习第一课 构建知识框架

    (一)设计思路: 本节课的教学内容根据课标和中考的要求,在教师的帮助下,引导学生梳理教材,构建知识框架.通过分工协作.探讨交流.归纳总结,能够构建三年来学过的知识框架,以便为后期的专项复习打下基础.在 ...

  7. Java入门第一课 初始概念和框架

    一.概述 Java项目是日常工作最常见的项目了,因此,及时作为运维人员,适当了解java相关知识,也是必要的,本文用以记录日常java相关相关知识点摘录,用以笔记及后续学习回顾. Java 是由 Su ...

  8. 第一课程序框架的构建——C#计算器编程教学

    程序再小,它也要运行的相关功能要求,或者还有扩展需求.比如,算式中有括号怎么办?你们不要被图片中的括号诱导,其实我没实现算式中有括号的功能,那只是取反. 选择了项目,当然第一步是确定功能需求.本计算器 ...

  9. 三层代码讲解--第一课

    主题:三层代码讲解--第一课 主持人:老吴 时间:2004-05-24 2004-05-24 10:47:00 天之痕_若虹(86278566) 請教大家一個問題好嗎 2004-05-24 10:47 ...

最新文章

  1. 编译原理-First集和Follow集
  2. pte模拟考试_【PTE懒人攻略】如何在7天内通过PTE考试
  3. 十种机制保护三大网络基础协议(BGP、NTP和FTP)—Vecloud微云
  4. mongodb中批量将时间戳转变通用日期格式
  5. 深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...
  6. 鼠标经过(hover)事件的延时处理
  7. (04)VTK移动模型,判断是否相交
  8. 《剑指offer》面试题30——最小的k 个数
  9. 【Unity3D插件】PUN 2插件分享《Unity3D多人在线联机联网插件》——客户端服务器端一体
  10. Git下载与安装 Windows
  11. 小白学习MySQL - 表空间碎片整理方法
  12. FAT32、NTFS、exFAT格式的区别
  13. 出场顺序很重要下一句_年少有为一夜刷爆朋友圈:人生的出场顺序真的很重要...
  14. 主域名跳转到带www的域名方法,以及对seo有什么影响?
  15. php ci log,PHP框架CI CodeIgniter 的log_message开启日志记录方法
  16. 【PyTorch】Optim 优化器
  17. 【超级干huo】用c语言制作游戏地图【可自定义】
  18. php inpo,优化PHP in_array()函数,效率提高50倍
  19. 第一个被赋予公明身份的机器人_史上首次 沙特授予“女性”机器人索菲娅公民身份...
  20. oracle 查看表空间使用情况

热门文章

  1. shopify开发经验
  2. 微信赚钱,应用开放平台
  3. 【抽象代数】素理想、极大理想、唯一析因环、主理想整环、欧几里得环
  4. html下拉框动态增加成员,JavaScript实现左右下拉框动态增删示例
  5. php解析m3u8代码,PHP解码转发M3U8 PHP读取转发M3U8的方法
  6. proxmox换源_Proxmox VE 5.4升级到Proxmox VE 6(中国源加速)
  7. B_随笔_关于网站记录(2)
  8. linux shell 看门狗,Linux 下如何使用看门狗
  9. 保护终端信息安全的意义何在?
  10. 2018年上半年网络工程师综合试题视频解析-乔俊峰-专题视频课程