一.Hibernate的理解:
Hibernate就是一个持久层的ORM的框架。对JDBC做了封装
只要java代码想连接上数据库,就一定要使用jdbc
使用hibernate主要是对数据库进行增删改查
三大框架与三层思想的关系:
三大框架struts2、spring、hibernate主要是对每一层整体的封装。
Struts2封装了web层,即控制层;spring封装了service层,即业务逻辑层;hibernate封装了dao层,即持久层。
ORM(Object Relation Mapping)对象关系映射框架,市面上有很多种,而企业中比较常用的有hibernate、mybatis等。我们主要讲hibernate。
使用hibernate封装后,带给我们的便利:
二.Hibernate框架的环境搭建:
需要倒的jar包:(16个)
将hibernate的开发环境包:hibernate-release-5.0.7.Final.zip
解压后的效果:
documentation :Hibernate的开发规范和文档
lib :Hibernate的开发使用的jar包(重点关注 requiredoptional)
project :Hibernate的提供测试的工程。
hibernate-release-5.0.7.Final\ lib \ required \ * 所有包
hibernate-release-5.0.7.Final\ lib \ optional \ c3p0 \ * 所有包
hibernate在运行的过程中会加载一个日志包
企业开发用的日志包: apacha-log4j.jar
required下面的所有包:9个
c3p0下面的所有包:3个
apache提供的日志包:3个
要连接的数据库驱动包(mysql) 1个
hibernate的环境搭建:16个jar包
-
创建配置文件:类名.hbm.xml(建议使用)
查找约束(hibernate.core/hibernate-mapping-3.0.dtd)
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
-
将类与表建立映射关系
-
建立类中的属性与表中的字段的映射
-
其他的属性都是用property建立映射
示例:
<hibernate-mapping>
<classname="com.itheima.hibernate.domain.Customer"table="cst_customer">
<id name="cust_id"column="cust_id">
<!-- 主键生成策略: -->
<generator class="native"/>
</id>
<property name="cust_name"column="cust_name"/>
<property name="cust_source"column="cust_source"/>
<property name="cust_industry"column="cust_industry"/>
<property name="cust_level"column="cust_level"/>
<property name="cust_phone"column="cust_phone"/>
<property name="cust_mobile"column="cust_mobile"/>
</class>
</hibernate-mapping>
-
创建数据库的核心配置文件
要求:文件的名字必须是:hibernate.cfg.xml 而且必须要放在src下面
查找约束(hibernate.core/ hibernate-configuration-3.0.dtd)
-
数据库的驱动
-
地址
-
用户名
-
密码
-
使用数据库的方言
-
C3p0(告诉数据库使用的c3p0连接池)
(以上几步基本是固定的)
-
控制台显示sql语句
-
将显示格式化
-
加载映射文件
-
让hibernate在数据库自动生成映射表(一般使用update)
-
使用hibernate提供的API
-
加载数据库的核心配置文件(引入映射文件)
Ps:需要注意的是,我们现在没有接触spring,所以要手动提交事务,不然sql语句不会执行。
Configuration configuration = new Configuration();
configuration.config();
-
获取sessionFactory(相当于连接池)
SessionFactory sessionFactory = Configuration.buildSessionFactory();
-
获取session对象(相当于连接)
Session session = sessionFactory.openSession();
-
开启事务
Transaction tx =session.beginTransaction();
-
操作增删改查
-
提交事务
tx.commit();
-
关闭连接
session.close();