IDEA2019.3配置Hibernate的詳細(xì)教程(未使用IDEA的自動(dòng)化)
創(chuàng)建一個(gè)純java項(xiàng)目,什么都不選直接建
創(chuàng)建數(shù)據(jù)庫(kù)、表以及少量記錄
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ù)庫(kù)圖形查看如下
在IDEA中連接數(shù)據(jù)庫(kù)的步驟如下
配置完的完整文件結(jié)構(gòu)如下圖
在菜單選擇File-Project Structure
選擇ProjectSettings下的Libaries,點(diǎn)擊“+”號(hào),選擇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)入了哪些包
創(chuàng)建一個(gè)對(duì)應(yīng)數(shù)據(jù)庫(kù)表的實(shí)體類(lèi),代碼如下
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)于如何自動(dòng)化生成getter與setter快捷鍵“Alt+Ins”,鼠標(biāo)單擊右鍵也會(huì)有個(gè)Generate選項(xiàng)
選擇要生成的屬性,然后點(diǎn)OK
<?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í)體類(lèi),table寫(xiě)上實(shí)體類(lèi)對(duì)應(yīng)表格的名字 --><id name='id' column='id'><!-- id是實(shí)體類(lèi)屬性的名字,column是表格中與實(shí)體類(lèi)對(duì)應(yīng)的列名(如果id和column一樣可以省略column) --> <generator /></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ù)庫(kù)用不同的方言,里面的值要寫(xiě)全,下面會(huì)給出一個(gè)表 --><property name='hibernate.connection.driver_class'>com.mysql.jdbc.Driver</property><!-- mysql驅(qū)動(dòng) --><property name='hibernate.connection.url'>jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai</property><!-- 數(shù)據(jù)庫(kù)連接,填上面IDEA連數(shù)據(jù)庫(kù)的那個(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ù)庫(kù)方言
關(guān)系數(shù)據(jù)庫(kù)管理系統(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ù)型引擎,也是最重要和使用最廣泛的存儲(chǔ)引擎。它被設(shè)計(jì)成為大量的短期事務(wù),短期事務(wù)大部分情況下是正常提交的,很少被回滾。InnoDB的性能與自動(dòng)崩潰恢復(fù)的特性,使得它在非事務(wù)存儲(chǔ)需求中也很流行。除非有非常特別的原因需要使用其他的存儲(chǔ)引擎,否則應(yīng)該優(yōu)先考慮InnoDB引擎。
MyISAM:在MySQL 5.1 及之前的版本,MyISAM是默認(rèn)引擎。MyISAM提供的大量的特性,包括全文索引、壓縮、空間函數(shù)(GIS)等,但MyISAM并不支持事務(wù)以及行級(jí)鎖,而且一個(gè)毫無(wú)疑問(wèn)的缺陷是崩潰后無(wú)法安全恢復(fù)。正是由于MyISAM引擎的緣故,即使MySQL支持事務(wù)已經(jīng)很長(zhǎng)時(shí)間了,在很多人的概念中MySQL還是非事務(wù)型數(shù)據(jù)庫(kù)。盡管這樣,它并不是一無(wú)是處的。對(duì)于只讀的數(shù)據(jù),或者表比較小,可以忍受修復(fù)操作,則依然可以使用MyISAM(但請(qǐng)不要默認(rèn)使用MyISAM,而是應(yīng)該默認(rèn)使用InnoDB)
測(cè)試是否配置成功創(chuàng)建一個(gè)用于測(cè)試的文件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的自動(dòng)化)的文章就介紹到這了,更多相關(guān)IDEA2019.3配置Hibernate內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. XML入門(mén)精解之結(jié)構(gòu)與語(yǔ)法2. jsp文件下載功能實(shí)現(xiàn)代碼3. React優(yōu)雅的封裝SvgIcon組件示例4. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera5. ASP中格式化時(shí)間短日期補(bǔ)0變兩位長(zhǎng)日期的方法6. jsp+servlet實(shí)現(xiàn)猜數(shù)字游戲7. ASP基礎(chǔ)知識(shí)Command對(duì)象講解8. ASP腳本組件實(shí)現(xiàn)服務(wù)器重啟9. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)財(cái)務(wù)記賬管理系統(tǒng)10. jsp+mysql實(shí)現(xiàn)網(wǎng)頁(yè)的分頁(yè)查詢
