可持久化數(shù)據(jù)結(jié)構(gòu) 有些“上古”程序員一直堅持反對使用redis怎么辦?
有些“上古”程序員一直堅持反對使用redis怎么辦?分享大人物的答案似乎合情合理。不要告訴我們是否使用redis。你必須告訴我們你為什么要使用redis。沒有redis的業(yè)務(wù)怎么了?世界上沒有免費的午
有些“上古”程序員一直堅持反對使用redis怎么辦?
分享大人物的答案似乎合情合理。
不要告訴我們是否使用redis。你必須告訴我們你為什么要使用redis。沒有redis的業(yè)務(wù)怎么了?世界上沒有免費的午餐。如果不直接使用頭部緩存/NoSQL,可能會帶來越來越嚴(yán)重的問題。
單個數(shù)據(jù)庫的最大優(yōu)點是易于實現(xiàn)事務(wù),并由數(shù)據(jù)庫本身保證。舉個簡單的例子,要下訂單,需要扣除庫存并插入訂單條目。如果inventory和order都是數(shù)據(jù)庫表條目,那么這個事務(wù)是無可挑剔的。如果庫存在redis中,訂單條目是mysql,通常需要先寫redis,成功后再寫數(shù)據(jù)庫。如果您寫數(shù)據(jù)庫失敗,需要回滾redis,如果由于網(wǎng)絡(luò)或其他原因回滾失敗,將再扣減一個存貨。不要認為這些事情很容易解決。事務(wù)處理的復(fù)雜性遠遠超出您的想象。例如,當(dāng)您編寫mysql時,您在提交時就失去了連接。你無法判斷提交是成功還是失敗。你的redis是不是在倒退?
因此,當(dāng)您引入一個新層時,您必須弄清楚您必須使用cache/NoSQL的目的以及您可以接受的一致性模型。否則,你就要出丑了。
jpa的優(yōu)缺點?
持久化Java對象。JPA可以直接持久化復(fù)雜的Java對象,并且可以使用jpql語言進行復(fù)雜的查詢。Jpql是JPA的一種特殊查詢語言,是一種類似于SQL的面向?qū)ο蟛樵冋Z言。
易于使用。JPA使用注釋來定義Java對象與關(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ī)定。目前,實現(xiàn)JPA標(biāo)準(zhǔn)的框架很多。使用JPA的系統(tǒng)可以自由選擇遵循JPA標(biāo)準(zhǔn)的框架,并且可以自由替換。
事務(wù)性、大量數(shù)據(jù)。JPA底層采用關(guān)系數(shù)據(jù)庫進行存儲,具有事務(wù)性、數(shù)據(jù)完整性、并發(fā)訪問、數(shù)據(jù)量大等關(guān)系數(shù)據(jù)庫的特點,與其他持久化技術(shù)相比,JPA具有很大的技術(shù)優(yōu)勢。表列出了JPA和其他持久性技術(shù)之間的比較。
因為它是非常新的,JPA規(guī)范可能需要經(jīng)過重要的開發(fā)才能變得非常穩(wěn)定。
JPA是規(guī)范,不是產(chǎn)品。提供商需要提供一個實現(xiàn)來獲得這些基于標(biāo)準(zhǔn)的api的好處。
非科班出身的人現(xiàn)在應(yīng)該學(xué)哪些主流框架?
這取決于你是想出去吃飯還是玩。如果是前者,則需要更多的時間來建立基礎(chǔ),并且框架將被普遍使用。