IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)

 更新时间:2021年05月10日 16:05:25   作者:MaskedRuler  
这篇文章主要介绍了IDEA2019.3配置Hibernate的详细教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

准备工作

创建一个纯java项目,什么都不选直接建

在这里插入图片描述

在这里插入图片描述

创建数据库、表以及少量记录

CREATE DATABASE test;
USE test;
CREATE TABLE t_user(
ID INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20),
AGE int);
insert into testHibernate(NAME,AGE) VALUES
('张三',20),
('李四',21),
('王五',22)

使用IDEA自带的数据库图形查看如下

在这里插入图片描述

在IDEA中连接数据库的步骤如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置

配置完的完整文件结构如下图

在这里插入图片描述

引用相关包

在菜单选择File-Project Structure

在这里插入图片描述

选择ProjectSettings下的Libaries,点击“+”号,选择Java

在这里插入图片描述

导入Hibernate相关的包。

找到放hibernate包的地方,把lib下required中的所有包选中导入

在这里插入图片描述

在导完Hibernate包后的列表里直接点“+”添加其他包

在这里插入图片描述

导入有关mysql的包。
我用了之前tomcat里的,主要是得匹配你的MySQL版本

在这里插入图片描述

最后结果如下图,点击Apply应用

在这里插入图片描述

可以在下方的ExternalLibararies里查看导入了哪些包

在这里插入图片描述

实体类(User.java)

创建一个对应数据库表的实体类,代码如下

package entity;

public class User {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

关于如何自动化生成getter与setter
快捷键“Alt+Ins”,鼠标单击右键也会有个Generate选项

在这里插入图片描述

选择要生成的属性,然后点OK

在这里插入图片描述

配置User实体类(user.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">
<hibernate-mapping>
    <class name="entity.User" table="t_user"><!-- name选择刚才的实体类,table写上实体类对应表格的名字 -->
        <id name="id" column="id"><!-- id是实体类属性的名字,column是表格中与实体类对应的列名(如果id和column一样可以省略column) -->
            <generator class="native"/>
        </id>
        <property name="name" column="name"/>
        <property name="age" column="age"/>
    </class>
</hibernate-mapping>

Hibernate配置文件(hibernate.cfg.xml)

<!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.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 方言模式,不同的数据库用不同的方言,里面的值要写全,下面会给出一个表 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- mysql驱动 -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai</property><!-- 数据库连接,填上面IDEA连数据库的那个界面里的URL -->
		<property name="hibernate.connection.username">root</property><!-- MySQL用户名 -->
		<property name="hibernate.connection.password">123456</property><!-- MySLQ密码 -->
		<property name="show_sql">true</property>
		<mapping resource="entity/user.hbm.xml"/><!-- 选择User的配置文件 -->
	</session-factory>
</hibernate-configuration>

方言选择

这里只给了三个有关MySQL的,详细的可以参考这篇文章hibernate 配置数据库方言

关系数据库管理系统 方言
MySQL org.hibernate.dialect.MySQLDialect
MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect
MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect

InnoDB:
MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎。它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回滚。InnoDB的性能与自动崩溃恢复的特性,使得它在非事务存储需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。

MyISAM:
在MySQL 5.1 及之前的版本,MyISAM是默认引擎。MyISAM提供的大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM并不支持事务以及行级锁,而且一个毫无疑问的缺陷是崩溃后无法安全恢复。正是由于MyISAM引擎的缘故,即使MySQL支持事务已经很长时间了,在很多人的概念中MySQL还是非事务型数据库。尽管这样,它并不是一无是处的。对于只读的数据,或者表比较小,可以忍受修复操作,则依然可以使用MyISAM(但请不要默认使用MyISAM,而是应该默认使用InnoDB)

测试是否配置成功

创建一个用于测试的文件manegeUser.java

package dao;

import entity.User;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;

public class manageUser {
    public static void main(String[] args){
        Configuration cfg = null;
        SessionFactory sf = null;
        Session session = null;
        Transaction ts = null;
        User u = new User();
        u.setName("赵六");
        u.setAge(66);
        try {
            cfg = new Configuration().configure();
            sf = cfg.buildSessionFactory();
            session = sf.openSession();
            ts = session.beginTransaction();
            session.save(u);
            ts.commit();
        }catch (HibernateException e){
            e.printStackTrace();
            if(ts != null){
                ts.rollback();
            }
        }finally {
            session.close();
            sf.close();
        }
    }
}

按“Ctrl+Shift+F10”执行该函数可看到如下输出

在这里插入图片描述

并且也成功插入了一条记录

在这里插入图片描述

配置成功

到此这篇关于IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)的文章就介绍到这了,更多相关IDEA2019.3配置Hibernate内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • POI XSSFSheet shiftRows bug问题解决

    POI XSSFSheet shiftRows bug问题解决

    这篇文章主要介绍了POI XSSFSheet shiftRows bug问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java设计模式之享元模式(Flyweight Pattern)详解

    Java设计模式之享元模式(Flyweight Pattern)详解

    享元模式(Flyweight Pattern)是一种结构型设计模式,旨在减少对象的数量,以节省内存空间和提高性能,本文将详细的给大家介绍一下Java享元模式,需要的朋友可以参考下
    2023-07-07
  • SpringBoot启动报错Whitelabel Error Page: This application has no explicit mapping for的解决方法

    SpringBoot启动报错Whitelabel Error Page: This&nbs

    当我们使用Spring Boot框架开发Web应用时,有时会遇到启动报错信息为"Whitelabel Error Page: This application has no explicit mapping for",种报错信息意味着我们的应用缺少某个URL映射的配置,导致请求无法处理,在本篇文章中,我们将详细讨论如何解决这个问题
    2024-03-03
  • java web实现邮箱激活与忘记密码

    java web实现邮箱激活与忘记密码

    这篇文章主要为大家详细介绍了java web实现邮箱激活与忘记密码、重置密码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 解读jdk动态代理为什么必须实现接口

    解读jdk动态代理为什么必须实现接口

    这篇文章主要介绍了解读jdk动态代理为什么必须实现接口问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 浅谈一段java代码是如何执行的

    浅谈一段java代码是如何执行的

    这篇文章主要介绍了浅谈一段java代码是如何执行的,小编觉得不错,下面就一起来了解一下
    2021-04-04
  • Java如何从List中删除元素的正确用法举例

    Java如何从List中删除元素的正确用法举例

    这篇文章主要给大家介绍了关于Java如何从List中删除元素的正确用法, 列表List是Java中的一种数据结构,存放按照添加顺序的元素,是个有序的集合,需要的朋友可以参考下
    2023-07-07
  • 使用jenkins+maven+git发布jar包过程详解

    使用jenkins+maven+git发布jar包过程详解

    这篇文章主要介绍了使用jenkins+maven+git发布jar包过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • java判断用户输入的是否至少含有N位小数的实例

    java判断用户输入的是否至少含有N位小数的实例

    下面小编就为大家分享一篇java判断用户输入的是否至少含有N位小数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • java 直接调用python脚本,并传递参数代码实例

    java 直接调用python脚本,并传递参数代码实例

    这篇文章主要介绍了java调用python脚本传递参数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论