Hibernate(1)——簡單、快速上手
目錄
2.5 建立hibernate核心配置檔案hibernate.cfg.xml
hibernate基本資料型別對映:——可參考連結:hibernate基本資料型別對映
1. Hibernate-orm
Domain model persistence for relational databases |
Orm:Object relational mapping,物件對映關係,用於物件與關係型資料庫關聯對映框架。
2. 快速上手
2.1 步驟
建立資料庫表t_user
建立java物件User.java
新增jar包
建立對映檔案
建立hibernate核心配置檔案hibernate.cfg.xml
測試
2.2 建立資料庫表t_user
CREATE DATABASE hibernate_207 CHARSET `UTF8`; CREATE TABLE t_user( id INT(9) PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(50) NOT NULL ); |
2.3 建立java物件User.java
2.4 新增jar
以及新增mysql-connection.jar
2.5 建立hibernate核心配置檔案hibernate.cfg.xml
注意:還要安裝一個專門為hibernate開發的工具:
eclipse安裝步驟:
選擇add進行線上安裝,選擇archive從本地來選擇上面我們說那個zip工具包:
然後點選選擇:
依次點選下一步即可,裝完之後我們的配置檔案在寫的時候就會有智慧提醒。並且,我們在new的時候,可以專門去找hibernate.cfg.xm檔案,下一步會有圖形化選擇來讓我們填寫。
而在IDEA中,沒有install new software這個操作,在IDEA中,我們是這麼做的:
首先,對專案目錄進行必要的配置:
- 在main目錄下新增resources資料夾,並且設定為resource
- 在test目錄下新增resources資料夾,並且設定為test-resources
具體方法如下:
IDEA中給專案新增支援的框架,右擊專案名,選擇add framework support.如果裡面沒有的話,就到File---settings裡面-----plugin搜尋新增apply。然後restart我們的idea,就可以到add framework support裡面看到我們想要的框架名字。勾選,apply。
上面有兩個可選項:
Create default hibernate configuration and main class
Import database schema
第一個是建立一個系統預設的hibernate的測試類(初學Hibernate時建議勾選,因為它會 給你提供相應的一些建立session的方法及幫助),勾選後會生成如下除錯程式碼;
第二個是匯入已有的資料庫Table,若此時已建立相應的Table,則可勾選,若沒有則 後期在來建立。
新增完成後,點選上面的專案架構圖示
進入project structure中的facets中,點選右邊那個+號,就可以生成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>
<!-- 1.方言:指定資料庫型別 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 2.配置資料來源 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_207</property>
<property name="connection.username">root</property>
<property name="connection.password">111111</property>
<!-- 列印sql -->
<property name="show_sql">true</property>
<!-- 3.載入對映檔案 -->
<mapping resource="com/sxt/model/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
2.6 建立對映檔案
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">
<!-- package:java物件包路徑 -->
<hibernate-mapping package="com.sxt.model">
<!-- 配置物件與table表關係 -->
<class name="User" table="t_user">
<!-- 指定主鍵 name:表示java物件屬性名 column:table表中的欄位 -->
<id name="id" column="id" type="integer">
<!-- 配置主鍵自增策略 -->
<generator class="native"/>
</id>
<!-- 配置其他屬性與欄位關聯關係 -->
<property name="uname" column="uname" type="string"/>
</class>
</hibernate-mapping>
hibernate基本資料型別對映:——可參考連結:hibernate基本資料型別對映
我們使用的IDEA,那麼在IDEA中,我們配置號hibernate核心檔案之後,可以通過資料庫中的表來自動建立orm配置檔案。
首先我們先把資料庫工具視窗開啟
然後點選小綠+,選擇MySQL
把該填寫的都填上。
然後點選測試連線:如果像上圖一樣,這個Test Connection不顯示的話,點選下方的下載(藍色的Download)
然後我們就可以看到可以顯示了。
儲存連線之後,就可以看到資料庫的具體內容:
下面是我們看到的資料庫的具體內容:
然後,我們把persistent工具開啟:
在這個視窗下面右擊專案名:
Generate Persistence Mapping -> By Database Schema 根據資料庫來建立對映。
按照上圖進行選擇,注意紅線框起來的部分。
點選OK,我們可以看到不光是orm配置檔案,連對應的類都幫我們建立好了。
點開brm.xml和類檔案,會發現有一些報錯提示。 如果有的話,那麼我們選擇點選alt+enter,提示讓我們鎖定資料來源。
直接點enter進入
滑鼠點選,OK即可。(IDEA之強大,讓我一天比一天喜歡)
提醒:看兩種方式建立起來的brm.xml檔案有什麼差別,我們在學習使用快捷便利的工具的同時,不要忘記思考。另外,這種方式還給我們生成了hibernate.cfg.xml檔案,裡面沒有給我們寫所連線資料庫的使用者名稱和密碼,注意新增!!!!
2.7 測試類
package com.sxt.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import com.sxt.model.User;
public class Helloworld {
public static void main(String[] args) {
//1.載入配置檔案
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
//2.建立sessionFactory cfg.buildSessionFactory()已被廢棄
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
SessionFactory sessionFactory = cfg.buildSessionFactory(serviceRegistry);
//3.開啟全新session
Session session = sessionFactory.openSession();
try {
//事務
Transaction ts = session.beginTransaction();
User user = new User();
user.setUname("bjsxt");
//新增資料
session.save(user);
//提交事務
ts.commit();
} catch (Exception e) {
}finally {
//關閉連線
if(session!=null){
session.close();
}
if(sessionFactory!=null){
sessionFactory.close();
}
}
}
}
執行成功: