一、hibernate概念:
1、hibernate是对ORM(对象关系映射)思想的实现。对JDBC进行了封装,简化了对JDBC的操作。是一个数据层的框架。
2、优点:
●大大简化了数据访问层的代码。
●支持多种数据库。
二、hibernate主要组成:
- hibernate.cfg.xml文件。这是hibernate的主要配置文件,用来配置连接数据库的
参数以及框架所要用到的参数。 - Java实体类。与数据库中表的字段对应。
- 实体类名. hbm.xml。映射文件,将实体类与表相关联。
三、hibernate使用:
可在官网下载hibernate的文档。里面有更详细的配置教程。
1、导入jar包。

其中hibernate3.jar为hibernate的核心jia包。dom4j包用于解析xml。mysql-connector-java-5.1.45-bin.jar用于连接数据库。
2、配置hibernate.cfg.xml配置文件。
在项目的src目录新建一个hibernate.cfg.xml文件。并在文件里写入一下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库连接参数设置 -->
<!-- jdbc驱动 com.mysql.jdbc.Driver -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC -->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernatetest?useSSL=false&serverTimezone=UTC</property>
<!-- 数据库用户名 root -->
<property name="connection.username">root</property>
<!-- 数据库密码 -->
<property name="connection.password">123456</property>
<!-- 数据库连接池大小 -->
<property name="connection.pool_size">1</property>
<!-- 方言,不同数据库sql语法不同 配置相应数据库的方言才能是hibernate更好的支持所使用的数据库 -->
<!-- 此处使用的数据库为mysql -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- session与当前线程绑定 session为hibernate和数据库之间的会话 -->
<property name="current_session_context_class">thread</property>
<!-- 是否在控制台打印sql语句 设为true可以在控制台看到执行过程中自动生成的sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 使sql看起来更清晰 -->
<property name="format_sql">true</property>
<!-- ddl策略 -->
<property name="hbm2ddl.auto">update</property>
<!-- 加入映射文件 目前实体类和映射文件还未写 这步在实体类和映射文件写好后再加入-->
<!-- 每新建一个实体类和映射文件后都需要在此配置映射文件 -->
<!-- cn/otote/entity/为包名 User.hbm.xml为映射文件 -->
<mapping resource="cn/otote/entity/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
其他配置选项可根据需求自行增加,可以在官网下载的文档找到相应的配置信息。
3、建一个实体类:
新建一个用户实体类用于测试。用户的属性有id、userName、age、sex。并生成set、get方法。
package cn.otote.entity;
public class User {
private Integer id;
private String userName;
private Integer age;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", age=" + age + ", sex=" + sex + "]";
}
}
4、配置映射文件:
在用户实体类的包下新建一个User.hbm.xml文件。并进行配置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- package为实体类所在的包名 -->
<hibernate-mapping package="cn.otote.entity">
<!-- name="User"为User实体类的类名 table为User实体类在数据库中的表名 这里表名取为t_user -->
<class name="User" table="t_user">
<!-- 主键用<id>标签 name为实体类中主键的属性名id column为t_user表中主键名id -->
<id name="id" column="id">
<!-- class="native"将主键id设为自增 -->
<generator class="native"/>
</id>
<!-- 普通字段用property标签 -->
<!-- name为实体类的属性名 column为表中的字段名 -->
<property name="userName" column="user_name"></property>
<!-- age属性与表中字段都为age 可以不用写column 以下同 -->
<property name="age"></property>
<property name="sex"></property>
</class>
</hibernate-mapping>
5、在hibernate.cfg.xml加入映射文件路径
<!-- 加入映射文件 目前实体类和映射文件还未写 这步在实体类和映射文件写好后再加入-->
<!-- 每新建一个实体类和映射文件后都需要在此配置映射文件 -->
<!-- cn/otote/entity/为包名 User.hbm.xml为映射文件 -->
<mapping resource="cn/otote/entity/User.hbm.xml" />
6、添加工具类:
package cn.otote.utils;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
7、测试:
建一个单元测试:代码如下:
package cn.otote.entity;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import org.junit.jupiter.api.Test;
import cn.otote.utils.HibernateUtil;
class UserTest {
@Test
void test() {
//创建session工厂
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
//获取当前线程的session
Session session = sessionFactory.getCurrentSession();
//开启事务
Transaction transaction = session.beginTransaction();
//创建一个用户
User user=new User();
user.setUserName("小明");
user.setAge(18);
user.setSex("男");
//通过hibernate将该用户保存到数据库中。
session.save(user);
//提交事务
transaction.commit();
}
}
8、运行单元测试。
如果配置文件开启了显示sql语句可以在控制台看到sql语句。

运行完毕打开数据库,此时可以看到hibernate已经自动为我们建了一个用户表且字段名与映射文件配的相同,并且将数据插入。至此hibernate的初步使用已经完成。



本文详细介绍了Hibernate框架的概念、优点及组成部分,包括配置文件、实体类和映射文件的创建过程。并通过一个实例演示了如何使用Hibernate进行数据库操作,从实体类定义、映射文件配置到单元测试,帮助初学者快速上手。
464

被折叠的 条评论
为什么被折叠?



