不会SQL语句怎么操作数据库?Hibernate帮你搞定!

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语言,一样能够操作数据库,不是吗?

结语

如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到。如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!

发布了8 篇原创文章 · 获赞 10 · 访问量 320

猜你喜欢

转载自blog.csdn.net/weixin_44018540/article/details/103967531