(一:)Hibernate是一个持久层开源的,轻量级的,对象关系映射的框架,让程序员养成面向对象编程的思想,它是对JDBC的封装
(二:)关于它工作的流程如下所示:
(1)加载核心配置文件和ORM映射文件
(2)获取sessionfactory的工厂对象
(3)获取操作数据的session对象
(4)开启事务
(5)操作数据
(6)提交事务
(7)关闭资源
(三)首先我们需要利用Maven工具去创建项目,然后导入依赖(需要注意一个坐标问题)
(四)创建Hibernate的核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<!-- 连接数据库所需要的四大参数 -->
<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql:///day2</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 核心配置的修改,要想在工具类中使用本地线程,需要在配置文件中添加此项配置 -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- 此处是打印SQL语句的命令,但是你想要去打印,容易丢的东西true -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- 格式化的方式打印SQL -->
<mapping resource="com/qf/pojo/Car.hbm.xml"/>
</session-factory>
</hibernate-configuration>
(五)创建实体类(包含属性及set和get方法),且创建ORM思想的配置文件(**.hbm.xml)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-8-30 8:23:25 by Hibernate Tools 5.2.1.Final -->
<hibernate-mapping>
<!-- name为实体类的路径 table为数据库表的表名 -->
<class name="com.qf.pojo.Tch" table="tch" catalog="hibernate" optimistic-lock="version">
<!-- 主键 -->
<id name="tid" type="java.lang.Integer">
<column name="tid" />
<!-- 关于主键的生成方式,请看下边的内容 -->
<generator class="identity" />
</id>
<!-- 对应的实体类的属性名和在数据库中字段的字段名 -->
<property name="tchName" type="string">
<column name="tch_name" length="100" />
</property>
<property name="tchSex" type="string">
<column name="tch_sex" length="100" />
</property>
</class>
</hibernate-mapping>
(六)将核心的配置文件加载到Hibernate.cfg.xml中,利用的是mapping这一个节点
(七)可以进行一次测试(关于实体类以及实体类的配置文件可以利用反向工程区自动生成)
在数据库中没有表的情况下,可以利用节点
<property name="hibernate.hbm2ddl.auto">update</property>
关于UPDATE建议使用这个,还有其他的几种类型的参数
关于测试的代码如下
public static void main(String[] args) {
//加载配置
Configuration configure = new Configuration().configure("hibernate.cfg.xml");
//得到
SessionFactory sessionFactory = configure.buildSessionFactory();
//初始化表
}
此处如果有兴趣可以写一个工具类,一个数据库只需要一个工厂就可以了,即sessionfactory是线程安全的
(八)现在已经完成了配置,现在就可以进行基本的CRUD操作了(这些操作是利用工具类写的)
想要利用Threadlocal,就需要在配置文件中添加一个节点
<!-- 核心配置的修改,要想在工具类中使用本地线程,需要在配置文件中添加此项配置 -->
<property name="hibernate.current_session_context_class">thread</property>
//添加数据
public void addBookIf(BookInfo bookinfo){
Session session = Hibernate.getSession();
Transaction transaction = session.beginTransaction();
Serializable save = session.save(bookinfo);
transaction.commit();
session.close();
}
public void findById(long id){
//查找数据
Session session = Hibernate.getSession();
BookInfo info = session.load(BookInfo.class, id);
System.out.println(info.getBookType().getTypeName());
}
public void upBookIf(BookInfo bookinfo){
//更新数据
Session session = Hibernate.getSession();
Transaction beginTransaction = session.beginTransaction();
session.update(bookinfo);
beginTransaction.commit();
session.close();
}
public void delBookIf(BookInfo bookinfo){
//删除数据
Session session = Hibernate.getSession();
Transaction transaction = session.beginTransaction();
session.delete(bookinfo);
transaction.commit();
session.close();
}