1. hibernate框架介绍和框架准备工作
1.1框架是什么?
框架用来提高开发效率的。 半成品项目
框架封装好了一些功能,我们需要使用这些功能时,调用即可,不需要再手动实现;
1.2 hibernate框架是什么?
三层架构:Web层( Struts2框架(代替servlet)+ jsp )
Service层( javaBean )
dao层(Hibernate框架:代替JDBC和DBUtils,帮我们完成数据库操作的)
Spring框架:横跨web,Service,DAO三层,是项目的容器和对象的管家,负责管理项目中的所有对象
1.3 hibernate的好处
操作数据库的时候,可以以面向对象的方式来完成,不需要书写SQL语句
1.4 hibernate是一款orm框架(ORM思想)
ORM(对象关系映射):通过使用配置文件(或其他手段),将对象的信息与数据库中的表进行对应,完成操作数据库,这种性质就称之为ORM。
ORM分为4级:Hibernate框架属于4级:完全面向对象操作数据库
Mybatis属于2级,dbutils属于1级
2. hibernate框架搭建
2.1导包
1. 连接数据库的驱动包: mysql-connector-java-5.1.7-bin.jar
2. Hibernate的必需包( required ):Lib下的所需文件夹里面的所有包
2.2创建数据库,准备表,实体类
2.3书写ORM元数据(对象与表的映射配置文件)
导入约束
实体类
ORM元数据
2.4书写主配置文件
2.5书写代码测试
3. hibernate框架 - 配置文件详解--orm元数据
配置表与实体对象的关系实体配置文件 Customer.hbm.xml
根元素,类元素,标识元素,属性元素,
4. hibernate框架 - 配置文件详解--hibernate主配置
主配置文件的hibernate.cfg.xml文件中
hibernate配置文件/ etc / hibernate.properties里面包括所有的配置的汇总,从中找到MySQL的配置信息
必选属性配置(5个): 数据库驱动,数据库URL,数据库连接用户名, 数据库连接密码,数据库方言
可选书写配置(3个): 显示sql , 格式化sql , 自动生成表(update)
ORM元数据引入配置: 路径书写:填写src 下的相对路径,Customer.hbm.xml——右键——Copy Qualified Name(拷贝完整名称,包括路径)
hibernate框架的api详解:
configuration : 读取配置;
sessionFactory: 创建session
Session: 获得事务操作对象,以及数据增删改查
Transaction:控制事务
5. hibernate框架api详解 -- Configuration对象
Configuration对象的功能: 配置加载类,用于加载主配置 , 以及orm元数据加载
eg:
public class Demo {
@Test
public void fun1(){
//1 创建,调用空参构造
Configuration conf = new Configuration();
//2 读取指定的主配置文件 => 空参加载方法,默认是 加载src下的 hibernate.cfg.xml文件
conf.configure();
//3 读取指定orm元数据(扩展了解知识,用xml文件,则不需要此步骤,古老方法), 如果主配置中已经引入映射配置.则不需要手动加载
//conf.addResource(resourceName);
//conf.addClass(persistentClass);
//4 根据配置信息,创建 SessionFactory对象
SessionFactory sf = conf.buildSessionFactory( );
//5 获得session:打开一个新的session对象
sf.openSession();
//获得一个与线程绑定的session对象(明天讲解)
sf.getCurrentSession();
}
}
6. hibernate框架api详解--SessionFactory对象
SessionFactory对象的功能: 用于创建 操作数据库核心对象session对象 的工厂。简单说,其功能就一个:创建session对象
注意: 1. sessionFactory 负责保存和使用所有配置信息,消耗内存资源非常大;
2. sessionFactory 属于线程安全的对象设计。
结论: 保证在web项目中, 只创建一个sessionFactory。
7. hibernate框架api详解--Session对象&Transaction对象
Session对象的功能: 表达hibernate框架与数据库之间的连接(会话)。 Session类似于JDBC年代的Connection对象。
Session还可以完成对数据库中的数据的增删改查操作。
Session是hibernate操作数据库的核心对象。
Session 的事务操作(提交、回滚等)/ 新增/ 查询 / 修改 / 删除
Transaction : 封装了事务的操作,
eg:
@Test
//session的新增
public void fun2( ){
//1 创建,调用空参构造
Configuration conf = new Configuration().configure();
//2 根据配置信息,创建 SessionFactory对象
SessionFactory sf = conf.buildSessionFactory();
//3 获得session
Session session = sf.openSession();
//4 session获得操作事务的Transaction对象
//方式1:获得操作事务的tx对象
//Transaction tx = session.getTransaction();
//tx.begin();
//方式2:开启事务并获得操作事务的tx对象( 建议使用 )
Transaction tx2 = session.beginTransaction();
//----------------------------------------------
Customer c = new Customer();
c.setCust_name("传智播客");
session.save(c); //保存
//----------------------------------------------
tx2.commit( ); //提交事务
session.close( ); //释放资源
sf.close( ); //释放资源
}
8. hibernate框架 - 封装Utils工具类
HibernateUtils.java :封装Utils工具类 注意:要保证在web项目中, 只创建一个sessionFactory
eg:
public class HibernateUtils {
private static SessionFactory sf ;
static{
//1 创建,调用空参构造
Configuration conf = new Configuration().configure();
//2 根据配置信息,创建 SessionFactory对象
sf = conf.buildSessionFactory();
}
//获得session => 获得全新session
public static Session openSession(){
//3 获得session
Session session = sf.openSession();
return session;
}
//获得session => 获得与线程绑定的session
public static Session getCurrentSession(){
//3 获得session
Session session = sf.getCurrentSession();
return session;
}
//main方法,用于测试
public static void main(String[] args) {
System.out.println(HibernateUtils.openSession());
}
}
9.练习 - 新增和保存客户
crm: customer relation manager 客户关系管理系统
9.1 准备
1. 创建web项目
2. 导包:
hibernate包, 数据库驱动包, 标签库包
3. 引入静态页面
4. 搭建hibernate 框架
5. 思路分析:
(1)客户管理— 添加客户——保存;
(2)AddCustomerServlet :
1. 获得表单提交数据,封装到Customer对象中;
2. 调用Service,保存Customer对象:
(1) 创建接口和实现类: CustomerService : 创建方法 void save(Customer c ); 调用Dao 保存 Customer;
(2) 创建接口和实现类:CustomerDao : 创建方法 void save( Customer c ); Hibernate 框架完成保存操作
3. 重定向到Customer列表(未开发)
6. 开发
7. 测试