准备工作

创建一个纯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的,详细的可以参考这篇文章

关系数据库管理系统 方言
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内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!