持久層是專注于持久化的一個層次赖钞。持久化就是把對象數(shù)據(jù)轉(zhuǎn)化成可以存儲在存儲設(shè)備中保存的步驟。
持久化的一種實現(xiàn)就是orm框架较解。ORM(object rational mapping)對象關(guān)系映射主要思想就是把model數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫中的表映射起來帽驯,不需要寫原生的sql語句就可以實現(xiàn)對數(shù)據(jù)的操作。
框架和數(shù)據(jù)庫的關(guān)系是什么呢囊榜?一句話概括审胸,就是持久層框架是通過orm實現(xiàn)持久化的,直接操作數(shù)據(jù)庫的數(shù)據(jù)卸勺。
ORM框架有mybatis砂沛,hibernate等。這兩種框架都可以實現(xiàn)操作關(guān)系型數(shù)據(jù)庫曙求,如mysql碍庵,sqlserver等。
JPA事實上是一種標(biāo)準(zhǔn)悟狱,定義了接口静浴,它的底層實現(xiàn)可以是hibernate或其他(hibernate最重要)。那spring data jpa是什么挤渐?它是一種特殊的jpa實現(xiàn)苹享,底層也是用到了hibernate,封裝的更好浴麻,設(shè)定了一些操作語句的樣式得问,只要寫這樣格式的方法,就可以自動實現(xiàn)相關(guān)的數(shù)據(jù)操作软免。(這種情況只能是通用的查詢條件宫纬,他輸?shù)牟僮鬟€得自己寫,即使用hibernate)
SpringDataJPA還提供了對NoSql的支持膏萧,如mongodb漓骚。
關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的區(qū)別宣蔚?
1.關(guān)系型數(shù)據(jù)庫要預(yù)設(shè)表,非關(guān)系型數(shù)據(jù)庫不需要认境。
2.非關(guān)系型數(shù)據(jù)庫擴(kuò)展性更強(qiáng)(例如表的結(jié)構(gòu)可以變)
3.非關(guān)系型數(shù)據(jù)庫不好做關(guān)聯(lián)操作胚委,關(guān)系型數(shù)據(jù)庫比較擅長