Hibernate简介、hibernate的简单使用、常见问题、hibernate的API详解-day01

目录一级目录一级目录
摘要由CSDN通过智能技术生成

第一节 Hibernate简介

1.1 项目中框架的体系结构

在这里插入图片描述

1.2 ORM框架

  • 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
  • 对象和表字段进行对应
  • 是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换
    • Object:对象,java对象,此处特指JavaBean,Model
    • Relational:关系,二维表,数据库中的表。
    • Mapping:映射

1.3 什么是hibernate

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

1.4 Hibernate总结

  • Hibernate是一个数据持久化层(dao)的ORM框架,它的主要功能就是把对象映射到表中,操作API,只需要将一个对象存储到数据库,不需要写sql语句。
  • Hibernate提供了对关系型数据库增删改查操作
    在这里插入图片描述

1.5 主流的ORM框架

  • JPA(Java Persistence API-java持久层API)JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系。(只有接口规范)
  • Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL。
  • MyBatis 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。
  • Apache DBUtils 、Spring JDBCTemplate

1.6 Hibernate的优点

  • Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
  • Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作 session.save(User);
  • Hibernate使用java的反射机制。
  • Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,有一对一到多对多的各种复杂关系映射。

hibernate如果有非常多的对象转换成sql就不如MyBatis自己写sql来的快了,因为它有一个转换的过程。

第二节 hibernate的简单使用

2.1 下载hibernate的jar包

  1. 下载hibernate的jar包
  • 官方网址:http://hibernate.org/orm/.
  • 最新的5.4,一般不用最新的,使用hibernate一般是老项目不会使用最新的版本
    在这里插入图片描述
  • 这里使用的是3.6.10版本的
  • 百度云链接无故被封。。。无法提供。。。

2.2 数据库建表

Navicat Premium 11 64位本来也放在上面百度云盘中

  1. 打开Navicat Premium新建查询
    在这里插入图片描述
create database hibernate_day1;
use hibernate_day1;
create table t_user(
  id int auto_increment primary key,
  username varchar(50),
  password varchar(30)
);

在这里插入图片描述

2.3 在IDEA中新建一个javaweb项目

  1. 创建项目,这里可以暂时不使用Tomcat,web.xml可要可不要
    在这里插入图片描述

2.4 导入jar包

  • 这里我们使用3.6.10的版本开发,4.0开发是建议使用注解

  • 所需要导入的jar包,如下图,然后再导入一个mysql数据库连接驱动

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • IDEA中导完jar包不要忘了右键Add as Library 导入
    在这里插入图片描述

  • 可以设置jar包适用的范围是整个项目还是这个模块,这里选择模块即可
    在这里插入图片描述

  • jar包的作用
    在这里插入图片描述

2.4 hibernate的核心配置文件

  1. hibernate.cfg.xml放入src
    在这里插入图片描述
    在这里插入图片描述
  2. hibernate.cfg.xml配置文件内容
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!-- 1、配置数据库连接的4个参数 -->
		<!-- mysql8以上的jar包要加上cj,com.msyql.cj.jdbc.Driver -->
		<!-- 这里用的是5,8以下,所以无需添加 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- ///代表是本地的默认localhost:3306可以省略,如果是在服务器要写://ip:端口号/ -->
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate_day1</property>
		<!-- 数据库用户名 -->
		<property name="hibernate.connection.username">root</property>
		<!-- 数据库密码 -->
		<property name="hibernate.connection.password">root</property>

		<!-- 是否显示sql语句 -->
		<property name="show_sql">true</property>
		
		<!-- 是否格式化sql语句 -->
		<property name="format_sql">true</property>
		
		<!-- 是否自动提交事务:针对insert有效,针对delete无效 -->
		<property name="hibernate.connection.autocommit">true</property>
		
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<!-- 2、配置JavaBean与表的映射文件 -->
		<mapping resource="com/it/hibernate/domain/User.hbm.xml" />
	</session-factory>
</hibernate-configuration>

2.6 编写JavaBean和映射文件.hbm.xml

  1. JavaBean与.hbm.xml文件所属的包和文件名要一致
    在这里插入图片描述
  2. User.java提供getter、setter、无参构造、username、password有参构造
    在这里插入图片描述
  3. User.hbm.xml配置内容
<!DOCTYPE hibernate-mapping PUBLIC
		"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<!--  name:模型的全名称 table:要和数据库的表名一致-->
	<class name="com.it.hibernate.domain.User" table="t_user">
		<!-- name:模型属性名就是User.java里的uid column:uid对应数据库中的id  -->
		<id name="uid" column="id">
			<!-- generator:id的生成策略
				 native:如果是mysql数据库,id会自动增长
			 -->
			<generator class="native"></generator>
		</id>
		<!-- 如果模型的属性和数据库的列名一样,就不用写column -->
		<property name="username"></property>
		<property name="password"></property>
	</class>
</hibernate-mapping>

2.7 测试

  • 创建com.it.hibernate.test包,在下面写一个Demo1.java
package com.it.hibernate.test;

import com.it.hibernate.domain.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class Demo1 {
   

	@Test
	public void test1(){
   
	
		//1.获取核心配置文件对象,默认是加载src的hibernate.cfg.xm文件
		//new Configuration()加载的是hibernate.properties,.configure()才是加载src的hibernate.cfg.xm
		Configuration cfg = new Configuration().configure();
		
		//2.创建会话工厂
		SessionFactory factory = cfg.buildSessionFactory();
		
		//3.创建会话
		Session sessoin = factory.openSession();
		
		//4.开启事务
		Transaction trans = sessoin.getTransaction();
		trans.begin();
		
		//5.保存
		User user = new User();
		user.setUsername
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值