單一主鍵
assigned:由java應(yīng)用程序負(fù)責(zé)生成(即手工的賦值)
native:由底層的數(shù)據(jù)庫自動(dòng)的生成標(biāo)示符,如果是mysql就是auto_increment,如果是oracle就是sequence,等等
操作的時(shí)候還是需要結(jié)合hibernate.cfg.xml文件的,因?yàn)閿?shù)據(jù)庫中的hbm2ddl.auto屬性如果是update的時(shí)候,設(shè)置為主鍵自增是可以的;但是如果是create的時(shí)候,第二次如果不手工的改變,恐怕就要出bug了。
基本類型
一般來說,按照java的數(shù)據(jù)類型進(jìn)行操作就可以。
其中最容易出錯(cuò)的數(shù)據(jù)類型是date 和 timestamp兩種。
- date類型既可以映射成java.util.date,也可以映射成java.sql.date類型。代表日期:yyyy-mm-dd
- time類型映射成java.util.time 和java.sql.time代表的時(shí)間:hh:mm:ss
- timesaamp可以映射成java.util.date或者java.sql.timestamp類型,代表的時(shí)間和日期:yyyymmddhhmmss
如何更改其阿紫數(shù)據(jù)庫中的數(shù)據(jù)庫類型呢?
在xx.hbm.xml文件中對(duì)class對(duì)象的property的type屬性進(jìn)行更改即可。改成hibernate自帶的數(shù)據(jù)類型就可以了。
對(duì)象類型
下面是hibernate支持的對(duì)象類型的總結(jié):
操作的時(shí)候只需要按照相應(yīng)的api即可。
需要注意的是mysql不支持標(biāo)準(zhǔn)的clob類型,在mysql中用text,mediumtext及l(fā)ongtext類型來表示長度超過255的長文本數(shù)據(jù)。
組件屬性
實(shí)體類中某個(gè)屬性屬于用戶自定義的類的對(duì)象
如:
1
2
3
4
5
|
<component name= "address" class = "address" > <property name= "postcode" column= "postcode" /> <property name= "phone" column= "phone" /> <property name= "address" column= "address" /> </component> |
也就是說一旦是用戶自定義的類型的話,在xx.hbm.xml文件中就要使用component標(biāo)簽,而不是單純的property標(biāo)簽了。這一點(diǎn)應(yīng)該有其的注意。
單表操作crud的實(shí)例
這里主要是使用到了session的幾個(gè)常用的api。如save,update,delete,和get/load等等。
- save:直接調(diào)用session.save(對(duì)象的實(shí)例)
- get/load:session.get/load(xx.class,標(biāo)示符);其中這個(gè)標(biāo)示符可以是主鍵對(duì)應(yīng)的值
- update:session.update(對(duì)象的實(shí)例)
- delete:session.delete(對(duì)象的實(shí)例)
get與load的區(qū)別:
- 一、不考慮緩存的情況下,get方法在調(diào)用之后立即的向數(shù)據(jù)庫發(fā)送sql語句,返回持久化的對(duì)象,而load方法會(huì)在調(diào)用后返回一個(gè)代理的對(duì)象,該代理對(duì)象只保存了實(shí)體對(duì)象的id,知道適用對(duì)象的非主鍵屬性時(shí)才會(huì)發(fā)出sql語句。
- 二、查詢數(shù)據(jù)庫中不存在的數(shù)據(jù)時(shí),get方法返回的是null,load方法則會(huì)拋出異常org.hibernate.objectnotfoundexception
總結(jié)
以上就是本文關(guān)于hibernate單表操作實(shí)例解析的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
原文鏈接:http://blog.csdn.net/marksinoberg/article/details/51459391