JavaWeb框架复习笔记-Hibernate(概念和基本思想+入门)
什么是Hibernate?Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO((Plain Ordinary Java Object)简单的Java对象)与数据库表建立映射关系,完成数据持久化的重任。Hibernate的思想采用的ORM思想,O就是Object、R就是Relations、M就是Mapping。1:翻译过来就是对象关联映...
什么是Hibernate?
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO((Plain Ordinary Java Object)简单的Java对象)与数据库表建立映射关系,完成数据持久化的重任。
Hibernate的思想
采用的ORM思想,O就是Object、R就是Relations、M就是Mapping。
1:翻译过来就是对象关联映射
2:就是实体类的属性和数据库表里面的字段进行一一对应
3:这个对应操作不用我们实现,只需要配置就可以实现
画个图表示如下:
Hibernate的使用方式
1.创建一个项目(普通项目或者Web项目)
2.导入相应的Jar包(要记得导入日志和mysql驱动jar包)
3.配置实体类和数据库表的一一对应关系
创建一个实体类
创建映射关系
1.是一个xml格式的配置文件
2.位置最好在实体类的包里创建
3.名字建议:实体类名字.hbm.xml格式(如user.hbm.xml)
创建核心配置文件hibernate.cfg.xml
1.名字是固定的
2.位置也是固定的(在src目录下面)
<!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>
<!--第一部分:配置数据库信息,这一步是必须的-->
<!--这里是mysql,可以去hibernate.propertity文件下找相应的驱动-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--配置数据库的路径,数据库要已经存在最后部分是数据库名字-->
<property name="hibernate.connection.url">jdbc:mysql:///hibernate_day1</property>
<!--配置数据库的连接信息(用户名和密码)-->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">529558445</property>
<!--第二部分:配置hibernate信息,可选部分-->
<!--输出底层sql语句-->
<property name="hibernate.show_sql">true</property>
<!--这里是配置底层MySQL输出格式化-->
<property name="hibernate.format_sql">true</property>
<!--这个配置是hibernate帮忙创建表-->
<!--其中update是有表更新,无表创建,还有其他三种
create、create-drop、validate-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--配置方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</property>
<!--第三部分:把映射文件放到核心配置文件中加载,这一步是必须的-->
<mapping resource="com/lfm/Entity/user.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
写一个测试类测试一下能否成功
package com.lfm.Test;
import com.lfm.Entity.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
/**
* 创建一个测试类测试数据库表的创建
* ClassName:HibernateTest
* Author:LFM
* Date:2019/6/30 21:50
**/
public class HibernateTest {
@Test
public void testAdd(){
//第一部分加载hibernate核心配置文件
//他会去src下找到核心配置文件hibernater.cfg.xml
Configuration cfg = new Configuration();
cfg.configure();
//第二部分创建SessionFactory对象
//读取hibernate的配置文件,创建sessionFactory
//在这过程中根据映射关系,在配置数据库里把表创建
SessionFactory sessionFactory = cfg.buildSessionFactory();
//第三部分,使用SessionFactory创建session对象
//这个类似于jdbc里面的连接conn
Session session = sessionFactory.openSession();
//第四部分开启事务
Transaction tx = session.beginTransaction();
//第五部分写具体的逻辑操作crud
User user = new User();
user.setUsername("廖子默");
user.setPassword("123456");
user.setAddress("广州");
session.save(user);
//第六部分提交事务
tx.commit();
//第七部分关闭资源
session.close();
sessionFactory.close();
}
}
我们去看一看数据库是否有表和记录
发现建表成功同时记录也插入了表里面,我们再插入一条新的数据测试主键增长
最后总结如下
映射配置文件的属性详解
1.映射配置文件的位置和名字没有强制要求,但是建议放到实体类的包下,且以hbm.mxl结尾
2.property标签里面的column的属性值可以不写,默认是和name的值是一样
核心配置文件属性详解
1.名称和位置是固定的,在src下叫hibernate.cfg.xml
2.里面有两部分必须的,一部分可选的。这个可以生成一份模板,以后只要修改mapping标签里面的resource值就行了。
附录:Hibernate的核心API
1.Configuration
Configuration cfg = new Configuration();
cfg.configure();
他要做的事情就是去加载核心配置文件
2.SessionFactory
使用configuration对象创建sessionFactory对象
创建sessionFactory过程中主要做的事情是根据核心配置文件的数据库配置,到数据库去把表创建了
<property name="hibernate.hbm2ddl.auto">update</property>
由于它创建过程中会创建表,所以这个过程是非常耗资源的,我们应该一个项目只创建一个这样的对象,可以使用工具类来实现:
用静态代码块在类加载的时候创建,工具类创建如下:
测试一下执行效果:
3.Session
1.这个类似于jdbc中的连接操作connection
2.里面有不同的方法(crud)
save、update、delete、根据id查询
3.这是一个单线程的对象,session对象不能共用,只能自己使用(最大的特点)
4.Transaction
事务对象
Transaction tx = session.beginTransaction();
事务包括提交(commit)、回滚(rollback)(这个例子没有实现)
事务由四个特性(ACID)原子性、一致性、隔离性、持久性
原子性:要么都成功要么都失败
一致性:数据的总量不变
隔离性:事物之间没有干扰
持久性:事务的修改是永久的
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)