jpa還有人用嗎 持久化對(duì)象的狀態(tài)都有哪些?
持久化對(duì)象的狀態(tài)都有哪些?它們的狀態(tài)是瞬時(shí)的,也就是說,它們沒有與數(shù)據(jù)庫表相關(guān)聯(lián)的行為。只要應(yīng)用程序不再引用這些對(duì)象(不再被任何其他對(duì)象引用),它們的狀態(tài)就會(huì)丟失并被垃圾回收機(jī)制回收。持久對(duì)象:持久實(shí)
持久化對(duì)象的狀態(tài)都有哪些?
它們的狀態(tài)是瞬時(shí)的,也就是說,它們沒有與數(shù)據(jù)庫表相關(guān)聯(lián)的行為。只要應(yīng)用程序不再引用這些對(duì)象(不再被任何其他對(duì)象引用),它們的狀態(tài)就會(huì)丟失并被垃圾回收機(jī)制回收。
持久對(duì)象:持久實(shí)例是具有數(shù)據(jù)庫標(biāo)識(shí)的任何實(shí)例。它由會(huì)話管理,會(huì)話是一個(gè)持久性管理器。持久實(shí)例在事務(wù)中操作。它們的狀態(tài)在事務(wù)結(jié)束時(shí)與數(shù)據(jù)庫同步。提交事務(wù)時(shí),通過執(zhí)行SQL的insert、update和delete語句,將內(nèi)存中的狀態(tài)同步到數(shù)據(jù)庫。
脫機(jī)對(duì)象:會(huì)話關(guān)閉后,持久對(duì)象變?yōu)槊摍C(jī)對(duì)象。
JPA如何實(shí)現(xiàn)修改一條記錄?
JPA必須刪除處于持久狀態(tài)的對(duì)象。如果未刪除,將出現(xiàn)異常。否則,表示已刪除。
返回的已刪除記錄數(shù)應(yīng)為同一表中的記錄數(shù)。在JPA中,刪除常常級(jí)聯(lián)刪除相關(guān)對(duì)象,因此刪除的記錄數(shù)就是多個(gè)表中刪除的記錄總數(shù)。即使知道總數(shù),也無法確定刪除了哪些表中的多少數(shù)據(jù),因此該數(shù)字是無意義的狀態(tài):簡單地說,就是在程序中創(chuàng)建一個(gè)與會(huì)話無關(guān)的新對(duì)象。持久狀態(tài):對(duì)象與會(huì)話相關(guān)聯(lián),對(duì)象在Hibernate框架管理中
持久Java對(duì)象。JPA可以直接持久化復(fù)雜的Java對(duì)象,并且可以使用jpql語言進(jìn)行復(fù)雜的查詢。Jpql是JPA的一種特殊查詢語言,是一種類似于SQL的面向?qū)ο蟛樵冋Z言。
易于使用。JPA使用注釋來定義Java對(duì)象與關(guān)系數(shù)據(jù)庫之間的映射,而傳統(tǒng)的ORM大多使用XML配置文件。JPA比orm更方便使用。使用JPA不需要關(guān)注底層數(shù)據(jù)庫。
標(biāo)準(zhǔn)化。JPA是JCP發(fā)布的統(tǒng)一API,由Java正式規(guī)定。目前,實(shí)現(xiàn)JPA標(biāo)準(zhǔn)的框架很多。使用JPA的系統(tǒng)可以自由選擇遵循JPA標(biāo)準(zhǔn)的框架,并且可以自由替換。
事務(wù)性、大量數(shù)據(jù)。JPA底層采用關(guān)系數(shù)據(jù)庫進(jìn)行存儲(chǔ),具有事務(wù)性、數(shù)據(jù)完整性、并發(fā)訪問、數(shù)據(jù)量大等關(guān)系數(shù)據(jù)庫的特點(diǎn),與其他持久化技術(shù)相比,JPA具有很大的技術(shù)優(yōu)勢(shì)。表列出了JPA和其他持久性技術(shù)之間的比較。
因?yàn)樗欠浅P碌?,JPA規(guī)范可能需要經(jīng)過重要的開發(fā)才能變得非常穩(wěn)定。
JPA是規(guī)范,不是產(chǎn)品。提供商需要提供一個(gè)實(shí)現(xiàn)來獲得這些基于標(biāo)準(zhǔn)的api的好處。