使用jdbc做資料庫相關功能開發會做很多重複性的工作,比如建立連線,關閉連線,把字段逐一對映到屬性中。 hibernate把這一切都封裝起來了,使得資料庫訪問變得輕鬆而簡單,**也更加容易維護。
第一次使用hibernate會有乙個比較多步驟的配置過程,以後再使用,就很簡單了。
必讀: 基於框架的程式要成功執行,對於jar包的版本,配置檔案的正確性有著苛刻的要求,任何乙個地方出錯了,都會導致框架程式執行失敗。 如果你是第一次學習本框架,務必嚴格按照教程的指導,完全模仿操作,直到成功看到執行效果。 第一次成功之後,信心,思路都會有較好的鋪墊,然後再根據自己的疑惑,在「成功」的**上做原本想做的改動和調整,這樣可以大大節約學習的時間,提高效率,切勿一來就擅自改動,給自己的學習製造障礙.
可執行專案:product.zip
步驟 1:
本例演示如何使用hibernate往資料庫插入一條資料。
如圖,這條iphone7的產品資料,就是由hibernate插入的
步驟 2:
首先準備資料庫test
注: 新安裝的資料庫賬號密碼是root:admin, 後續的配置裡,也是用的這個賬號密碼。如果密碼不是這個,本知識點右上角的可執行專案跑不起來,所以盡量修改密碼root
create database test;
步驟 3:
準備表product, 有3個字段,分別是
主鍵id(自增長)
字串格式的name
浮點數格式的price
use test;
create table product_ (
id int(11) not null auto_increment,
name varchar(30) ,
price float ,
primary key (id)
) default charset=utf8;
步驟 4:
步驟 5:
新建乙個lib的資料夾
把所有的包都複製過去
然後把包全部匯入進去
步驟 6:
package com.iscc.pojo;
public class product
public void setid(int id)
public string getname()
public void setname(string name)
public float getprice()
public void setprice(float price)
步驟 7:
在包com.iscc.pojo下 新建乙個配置檔案product.hbm.xml, 用於對映product類對應資料庫中的product_表
注: 檔名 product.hbm.xml
p一定要大寫,要和類保持一致
表示類product對應
表product_
表示屬性id,對映表裡的
欄位id
意味著id的自增長方式採用資料庫的本地方式
如果是連線oracle資料庫,可以指定sequnce作為id自增長方式
這裡配置的時候,只寫了屬性name,沒有通過column="name" 顯式的指定字段,那麼欄位的名字也是name.
<?xml version="1.0" encoding="utf-8"?>在
src目錄下建立 hibernate.cfg.xml
配置訪問資料庫要用到的驅動,url,賬號密碼等等
其他配置及含義:
org.hibernate.dialect.mysqldialect
這表示使用mysql方言。 什麼方言呢? 因為在**層面,開發人員不用關心底層到底用oracle還是mysql,寫的**都是一樣的。 可是oracle和mysql所用的sql語句的語法是有所區別的,那麼這件事就交給hibernate來做了。這個時候就需要告訴hibernate底層用的是什麼資料庫,它才知道應該用什麼樣的「方言」 去對話。
thread
這是hibernate事務管理方式,即每個執行緒乙個事務
true
這表示是否在控制台顯示執行的sql語句
update
這表示是否會自動更新資料庫的表結構,有這句話,其實是不需要
建立表的,因為hibernate會自動去建立表結構
這表示hibernate會去識別product這個實體類
com.mysql.jdbc.driver
root
jdbc:mysql:
root
org.hibernate.dialect.mysqldialect
org.hibernate.dialect.mysqldialect
thread
true
update
步驟 9:
步驟 10:
應用程式通過hibernate把 乙個 product物件插入到資料庫的product_表中
hibernate.cfg.xml 配置檔案提供鏈結資料庫的基本資訊
賬號 密碼 驅動 資料庫ip 埠
product.hbm.xml 提供物件與表的對映關係
對應哪個表? 什麼屬性,對應什麼字段
步驟 11:
執行起來之後會出現如圖所示的三行警告資訊,這是因為沒有進行slf4j配置,所以出現的警告資訊,不影響執行。
要解決這個問題,需要引入log4j的jar和配置檔案,和當前hibernate學習無關,為了把注意力集中在hibernate本身的學習上,驚蟄就不提供log4j那些東西了。 不影響執行的,大家往下學習好啦
hibernate相關新入職
table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。identity 主鍵由資料庫自動生成 主要是自動增長型 auto 主鍵由程式控制。另外這個框架如果用hibernate註解開發表沒用主鍵的話會崩,而且還要設定主鍵的生成策略。inj...
Valang Validator學習例項入門
valang validator 是較為新穎的外掛程式,在參考胡鍵 valang validator攻略 一文以及官方指導文章後將自己將學習valang validator的乙個完整例項寫下,希望對大家有所幫助。對於valang validator的介紹可以參考本部落格內的 valang valid...
基於Hibernate的主鍵生成策略
1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定sequence...