IDEA2019.3配置Hibernate的詳細(xì)教程(未使用IDEA的自動化)
準(zhǔn)備工作
創(chuàng)建一個(gè)純java項(xiàng)目,什么都不選直接建


創(chuàng)建數(shù)據(jù)庫、表以及少量記錄
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自帶的數(shù)據(jù)庫圖形查看如下

在IDEA中連接數(shù)據(jù)庫的步驟如下



配置
配置完的完整文件結(jié)構(gòu)如下圖

引用相關(guān)包
在菜單選擇File-Project Structure

選擇ProjectSettings下的Libaries,點(diǎn)擊“+”號,選擇Java

導(dǎo)入Hibernate相關(guān)的包。
找到放hibernate包的地方,把lib下required中的所有包選中導(dǎo)入

在導(dǎo)完Hibernate包后的列表里直接點(diǎn)“+”添加其他包

導(dǎo)入有關(guān)mysql的包。
我用了之前tomcat里的,主要是得匹配你的MySQL版本

最后結(jié)果如下圖,點(diǎn)擊Apply應(yīng)用

可以在下方的ExternalLibararies里查看導(dǎo)入了哪些包

實(shí)體類(User.java)
創(chuàng)建一個(gè)對應(yīng)數(shù)據(jù)庫表的實(shí)體類,代碼如下
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;
}
}
關(guān)于如何自動化生成getter與setter
快捷鍵“Alt+Ins”,鼠標(biāo)單擊右鍵也會有個(gè)Generate選項(xiàng)

選擇要生成的屬性,然后點(diǎn)OK

配置User實(shí)體類(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選擇剛才的實(shí)體類,table寫上實(shí)體類對應(yīng)表格的名字 -->
<id name="id" column="id"><!-- id是實(shí)體類屬性的名字,column是表格中與實(shí)體類對應(yīng)的列名(如果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><!-- 方言模式,不同的數(shù)據(jù)庫用不同的方言,里面的值要寫全,下面會給出一個(gè)表 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- mysql驅(qū)動 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai</property><!-- 數(shù)據(jù)庫連接,填上面IDEA連數(shù)據(jù)庫的那個(gè)界面里的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>
方言選擇
這里只給了三個(gè)有關(guān)MySQL的,詳細(xì)的可以參考這篇文章hibernate 配置數(shù)據(jù)庫方言
| 關(guān)系數(shù)據(jù)庫管理系統(tǒng) | 方言 |
|---|---|
| MySQL | org.hibernate.dialect.MySQLDialect |
| MySQL with InnoDB | org.hibernate.dialect.MySQLInnoDBDialect |
| MySQL with MyISAM | org.hibernate.dialect.MySQLMyISAMDialect |
InnoDB:
MySQL默認(rèn)的事務(wù)型引擎,也是最重要和使用最廣泛的存儲引擎。它被設(shè)計(jì)成為大量的短期事務(wù),短期事務(wù)大部分情況下是正常提交的,很少被回滾。InnoDB的性能與自動崩潰恢復(fù)的特性,使得它在非事務(wù)存儲需求中也很流行。除非有非常特別的原因需要使用其他的存儲引擎,否則應(yīng)該優(yōu)先考慮InnoDB引擎。
MyISAM:
在MySQL 5.1 及之前的版本,MyISAM是默認(rèn)引擎。MyISAM提供的大量的特性,包括全文索引、壓縮、空間函數(shù)(GIS)等,但MyISAM并不支持事務(wù)以及行級鎖,而且一個(gè)毫無疑問的缺陷是崩潰后無法安全恢復(fù)。正是由于MyISAM引擎的緣故,即使MySQL支持事務(wù)已經(jīng)很長時(shí)間了,在很多人的概念中MySQL還是非事務(wù)型數(shù)據(jù)庫。盡管這樣,它并不是一無是處的。對于只讀的數(shù)據(jù),或者表比較小,可以忍受修復(fù)操作,則依然可以使用MyISAM(但請不要默認(rèn)使用MyISAM,而是應(yīng)該默認(rèn)使用InnoDB)
測試是否配置成功
創(chuàng)建一個(gè)用于測試的文件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”執(zhí)行該函數(shù)可看到如下輸出

并且也成功插入了一條記錄

配置成功
到此這篇關(guān)于IDEA2019.3配置Hibernate的詳細(xì)教程(未使用IDEA的自動化)的文章就介紹到這了,更多相關(guān)IDEA2019.3配置Hibernate內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于java語言實(shí)現(xiàn)快遞系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了基于java語言實(shí)現(xiàn)快遞系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Spring Security CsrfFilter過濾器用法實(shí)例
這篇文章主要介紹了Spring Security CsrfFilter過濾器用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Java自學(xué)書籍推薦 程序員到架構(gòu)師必看的書
這篇文章主要為大家推薦了Java程序員到架構(gòu)師自學(xué)書籍,幫助大家不斷提高自己的專業(yè)水平,感興趣的小伙伴們可以參考一下2016-09-09
Java線程池ForkJoinPool(工作竊取算法)的使用
Fork就是把一個(gè)大任務(wù)切分為若干個(gè)子任務(wù)并行地執(zhí)行,Join就是合并這些子任務(wù)的執(zhí)行結(jié)果,最后得到這個(gè)大任務(wù)的結(jié)果。Fork/Join?框架使用的是工作竊取算法。本文主要介紹了ForkJoinPool的使用,需要的可以參考一下2022-11-11

