Hibernate對單條記錄的增刪改查
(hibernate學習筆記系列來自於 “瘋狂Java” Hibernate視訊學習)
- 儲存使用者
- session.save(person);
- session.persist(person);
- 查詢使用者
- load(Class theClass,Serializable id)
- get(Class theClass,Serializable id)
- 修改使用者
- session.update(person)
- session.merger(person);
- 儲存或修改使用者
- session.saveOrUpdate(person)
- merge(person)
- 刪除使用者
- session.delete(person)
增
增加記錄有兩種方法,save()和persist();
而persist:堅持; 存留; 固執; 繼續存在,所以persist()的名字更加顯而易見
save()會返回一個id
而persist()沒有返回值
**如果新增的物件指定了id欄位,persist會出現異常,而save會忽略id欄位的設定**
查
根據id查詢一條記錄,方法有兩種load()和get()方法
-
load(Class theClass,Serializable id)
theClass指待查詢的持久化類,Serializable id表示表中的第幾條記錄
-
get(Class theClass,Serializable id)
get立即查詢,而load是延遲查詢(用的時候查詢)
load返回的是一個持久化類的代理,等到使用例項的除id之外的欄位才查詢資料庫
load方法查詢id對應的記錄不存在時會出現ObjectNotFoundException異常
get方法查詢的記錄不存在的時候返回記錄為null
在*.hbm.xml檔案裡可以使用class標籤的lazy屬性設定load方法是否立即查詢,預設為true,代表延遲查詢
改
方法為update(),merge(),saveOrUpdate()
首先需要了解hibernate中物件存在的三種狀態
update()和merge(),saveOrUpdate()都有兩種方式
-
先查詢出一條記錄,然後在執行update進行更新資料記錄
改的時候需要事務,所以要用session建立一個transaction物件。 修改的時刻在session關閉的時候
-
自己new一個物件,然後設定所要更新的欄位,其他的欄位也要設定為原來的值(否則會變成空),然後設定id的值,這個id必須是資料庫中存在的id,否則會出現異常
在這裡我們也可以看出資料庫中唯一標識欄位應該是一個物件,而不是基本型別,因為基本型別會有預設的值,這樣的話如果忘了setId(id),那麼就會修改掉id=0的記錄
-
利用session.merge(Object o)
merge()方法會返回o所對應的一個持久化物件,如果o本身就是一個持久化物件,則返回值與o指向的是同一個物件;如果o是一個臨時狀態(new出來的一個物件),則返回值是一個持久化物件,而與o是不同的。
對於merge
如果給定的id不存在就是新增,即使id不存在;
如果id存在,就是修改。 -
利用saveOrUpdate()
根據傳遞的物件有沒有ID來進行新增或修改操作。
有id就是修改
沒有id就是新增
如果傳遞的物件的id在資料庫裡不存在,則會出錯
刪
方法:delete()
用get或者load得到要刪除的記錄,然後呼叫delete(Object o);
或者new一個物件,設定id,然後呼叫delete(),如果id不存在丟擲異常
以上的操作都是針對一條記錄的增刪改查
相關文章
- Hibernate--增刪改查
- Hibernate進行增刪查改
- CoreData - 簡單 增刪改查
- hibernate增刪差改
- Hibernate--與Spring整合及增刪改查Spring
- 增刪改查
- Go實現對MySQL的增刪改查GoMySql
- 筆記03:sqlalchemy增刪改查筆記SQL
- layui的增刪改查UI
- 列表的增刪改查
- 字典的增刪改查
- redist的增刪改查Redis
- Mybatis的增刪改查MyBatis
- MongoDB的增刪改查MongoDB
- ThinkPHP的增、刪、改、查PHP
- layui+ssm簡單增刪改查UISSM
- MongoDB——簡單增、刪、改、查實踐MongoDB
- 使用Spring整合Hibernate,並實現對資料表的增、刪、改、查的功能Spring
- indexedDB 增刪改查Index
- SQL增刪改查SQL
- mysql增刪改查MySql
- Mongoose查增改刪Go
- FMDB增刪改查
- mysql增查刪改MySql
- Java實現簡單的增刪改查操作Java
- PLSQL學習-【2簡單的增刪改查】SQL
- [增刪改查] 最簡單的 JPA 一對多/多對一 CRUD 設計
- 單連結串列實現增刪改查
- 使用者對某條賬單記錄的刪除操作
- sql指令,增,刪,查,改SQL
- EFCore之增刪改查
- mysql基本增刪改查MySql
- MongoDB增刪改查操作MongoDB
- mongodb 基本增刪改查MongoDB
- js對json格式物件增刪改查功能JSON物件
- Mybatis-plus實現簡單增刪改查MyBatis
- 02-CoreData 的增刪改查
- 增刪改查框架的疑問框架