1.web内容回顾
- JavaEE三层结构
- web层:struts2框架
- service层:spring框架
- dao层:hibernate框架,对数据库进行CRUD操作
- MVC思想
2.Hibernate概述
在写程序时,框架可以帮我们实现一部分功能,可以少写一部分代码。
- 什么是Hibernate框架
- 应用在javaee三层结构中的dao层框架
- 在dao层里面做数据库的crud操作,底层代码就是jdbc,对jdbc进行了封装。不需要写复杂的jdbc代码和sql语句
- 开源轻量级(不依赖其他东西)
- 什么是orm思想
- object relational mapping,对象关系映射
- 实体类和数据表一一对应,实体类属性和数据表字段一一映射
- 不需要操作数据库,而操作表对应的实体类对象
3.Hibernate入门
- 搭建Hibernate环境
- 导入jar包
- 创建实体类
- 配置实体类和数据表的一一对应关系,通过创建User.hbm.xml配置文件,使用dtd约束,文件位置不固定,建议放在实体类的包下面
- 创建hibernate核心配置文件,文件名称和位置固定,hibernate.cfg.xml,放在src下面。hibernate在加载过程中,只会加载核心配置文件,其他配置文件不会加载。①配置数据库信息 ②配置hibernate信息 ③把映射文件放到核心配置文件中
注意:如果数据库版本为MySQL8,应将上述两处修改
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_day01?useSSL=false&serverTimezone=UTC</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
- 实现添加操作
- 加载hibernate核心配置文件
- 创建SessionFactory对象
- 使用SessionFactory创建Session对象
- 开启事务
- 写具体逻辑crud操作
- 提交事务
- 关闭资源
public class HibernateDemo {
@Test
public void testAdd(){
//1.加载hibernate核心配置文件
//到src下面找到hibernate.cfg.xml
Configuration cfg = new Configuration();
cfg.configure();
//2.创建SessionFactory对象
//根据映射关系,创建表
SessionFactory sessionFactory = cfg.buildSessionFactory();
//3.使用SessionFactory创建Session对象
Session session = sessionFactory.openSession();
//4.开启事务
Transaction transaction = session.beginTransaction();
//5.写具体逻辑crud操作
User user = new User();
user.setUsername("东尼大木");
user.setPassword("250");
user.setAddress("Tokyo");
//调用session方法实现
session.save(user);
//6.提交事务
transaction.commit();
//7.关闭资源
session.close();
sessionFactory.close();
}
}
4.注意事项
1.一般情况下,一个项目中只需要一个SessionFactory,只有当应用中存在多个数据源时,才为每个数据源创建一个SessionFactory实例。因此,在实际项目中,通常会抽取出一个HibernateUtils工具类,用来提供Session对象。
public class HibernateUtils {
private static final Configuration configuration;
private static final SessionFactory sessionFactory;
static{
configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
}
2.Session类似于jdbc中的Connection,调用不同方法实现crud操作。
(1)添加save()方法
(2)修改update()方法
(3)删除delete()方法
(4)根据id查询get()方法
session对象为单线程对象,不能共用
3.transaction事务,提交方法commit(),回滚方法rollback()
- 事务的四个特性:原子性、一致性、隔离性、持久性