Hibernate简介
Hibernate是一个开源的对象关系映射框架,它对JDBC进行了轻量级的对象封装。它不仅仅提供了从Java类到数据库之间的映射,也提供了查询和事务机制。相对于JDBC和SQL语言操作数据库,Hibernate大大地减少了操作数据库的工作量。
Hibernate下载入门指南
1.前往Hibernate的官网
下载需要的jar包。链接为:Hibernate官网
2.选择自己需要的Hibernate版本
博主选择的是5.2版本,不建议选择最新的版本,因为最新的版本通常不稳定,选择中间的版本更适合初学者。
3.点击下载
4.下载完成解压,打开lib包中的required文件夹,便是Hibernate必备的jar包了。
Hibernate编程步骤
1.导入相对应的jar包,建立数据表
2.编写持久化类(实体类)
3.编写映射文件
4.编写hibernate.cfg.xml配置文件
5.编写业务处理
a)使用Configuration对象的buildSessionFactory()方法创建SessionFactory
b)使用SessionFactory对象的openSession()创建Session对象
c)使用Session的相应方法来操作数据库,把对象持久化到数据库中
Hibernate实现
1.导入相对应的jar包建立数据表
导入的jar包包括:Hibernate中Required文件夹里的所有jar包、JDBC驱动包(博主使用的是MySQL8)
博主使用的数据表如下,如果不会建表的小伙伴可以关注博主之后的博客哦!
2.编写持久化类(实体类)
User.java
package entity;
public class User {
private int id;
private String username;
private String password;
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username=username;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password=password;
}
}
3.编写映射文件
User.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">
<!--
用于映射UsersEntity实体类,对应数据库中users表
-->
<hibernate-mapping package="entity">
<class name="User" table="user">
<!--属性id,映射表里的字段id-->
<id name="id" column="id">
<!--id的自增长方式采用数据库的本地方式-->
<generator class="native"></generator>
</id>
<property name="username" column="username"/>
<property name="password" column="password"/>
</class>
</hibernate-mapping>
4.编写hibernate.cfg.xml配置文件
hibernate.cfg.xml
<?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>
<!--配置数据库连接的驱动类、url、用户名、密码-->
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test?serverTimezone=UTC</property>
<property name="connection.username">root</property>
<property name="connection.password">123a123a</property>
<!--使用MySQL方言,告诉Hibernate数据库类型-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--事务管理方式-->
<property name="current_session_context_class">thread</property>
<!--是否显示SQL语句-->
<property name="show_sql">true</property>
<!--映射实体类映射文件-->
<mapping resource="entity/User.xml"></mapping>
</session-factory>
</hibernate-configuration>
5.编写业务处理
Insert.java
package test;
import entity.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Insert {
public static void main(String[] args) {
//获取SessionFactory
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
//通过SessionFactory获取Session
Session session = sessionFactory.openSession();
//在Session基础上开启一个事务
session.beginTransaction();
//通过调用Session的save方法把对象保存到数据库,插入一条数据
User user = new User();
user.setUsername("superadmin");
user.setPassword("superadmin");
session.save(user);
//提交事物
session.getTransaction().commit();
//关闭事物
session.close();
sessionFactory.close();
}
}
Delete.java
package test;
import entity.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Delete {
public static void main(String[] args) {
//获取SessionFactory
SessionFactory sessionFactory =new Configuration().configure().buildSessionFactory();
//通过SessionFactory获取Session
Session session=sessionFactory.openSession();
//Session开启事物
session.beginTransaction();
//根据id查询一条记录
User user = (User) session.get(User.class, 7);
//删除
session.delete(user);
//提交事物
session.getTransaction().commit();
//关闭事物
session.close();
sessionFactory.close();
}
}
Update.java
package test;
import entity.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Update {
public static void main(String[] args) {
//获取SessionFactory
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
//通过SessionFactory获取Session
Session session = sessionFactory.openSession();
//Session开启事物
session.beginTransaction();
//根据id查询一条记录
User user = (User) session.get(User.class, 1);
System.out.println("id是=1的数据参数:" + user.getUsername());
//修改密码
user.setPassword("root");
session.update(user);
//提交事物
session.getTransaction().commit();
//关闭事物
session.close();
sessionFactory.close();
}
}
Select.java
package test;
import entity.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Select {
public static void main(String[] args) {
//获取SessionFactory
SessionFactory sessionFactory =new Configuration().configure().buildSessionFactory();
//通过SessionFactory获取Session
Session session=sessionFactory.openSession();
//在Session基础上开启一个事务
session.beginTransaction();
//查询方式get
User user = (User) session.get(User.class, 4);
System.out.println("get:id=4的用户名:" + user.getUsername());
//查询方式load
User user2 = (User) session.load(User.class, 5);
System.out.println("load:id=5的用户名:" + user2.getUsername());
//提交事物
session.getTransaction().commit();
//关闭事物
session.close();
sessionFactory.close();
}
}
整体的项目结构就完成啦,文件结构如下:
Hibernate框架是不是省去了编写SQL语句的烦恼呢?即使没有学过数据库,不会SQL语言,一样能够操作数据库,不是吗?
结语
如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到。如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!