数据知识栈
并發(fā)不適合膽小者
我們都知道并發(fā)編程很難正確實現(xiàn)。 這就是為什么在執(zhí)行線程任務(wù)之后要進行大量的設(shè)計和代碼審查會議。
您永遠不會將并發(fā)問題分配給經(jīng)驗不足的開發(fā)人員。 仔細分析問題空間,提出設(shè)計,并記錄和審查解決方案。
這就是通常處理線程相關(guān)任務(wù)的方式。 您自然會選擇更高級別的抽象,因為您不想陷入低級細節(jié)中。 這就是為什么java.util.concurrent通常比手工生產(chǎn)者/消費者Java 1.2風格的線程安全結(jié)構(gòu)更好(除非您構(gòu)建高頻交易系統(tǒng))。
數(shù)據(jù)庫編程有什么不同嗎?
在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)分布在各種結(jié)構(gòu)(SQL表或NoSQL集合)中,并且多個用戶可以選擇/插入/更新/刪除他們選擇的任何內(nèi)容。 從并發(fā)的角度來看,這是一個非常具有挑戰(zhàn)性的任務(wù),而不僅僅是數(shù)據(jù)庫系統(tǒng)開發(fā)人員的問題。 這也是我們的問題。
典型的RDBMS數(shù)據(jù)層要求您掌握各種技術(shù),而您的解決方案僅與團隊最薄弱的地方一樣強大。
成功秘訣
當涉及到數(shù)據(jù)庫編程時,您永遠都不應(yīng)從未受過訓練。 不斷學習是您最好的武器,沒有其他方法。
為此,我想出了自己的數(shù)據(jù)知識堆棧:
在前進到上一層之前,您應(yīng)該始終掌握下一層。
因此,這些是馴服數(shù)據(jù)層的黃金法則:
- 該數(shù)據(jù)庫手冊不僅適用于數(shù)據(jù)庫管理員。如果您正在執(zhí)行任何與數(shù)據(jù)庫相關(guān)的任務(wù),那么閱讀當前的數(shù)據(jù)庫手冊不是可選的。 您應(yīng)該熟悉SQL標準和數(shù)據(jù)庫特定的特征。 擺脫SQL-92思維定式 。 不要讓可移植性的恐懼使您拒絕高效的數(shù)據(jù)庫特定功能。 最終,使用緩慢的數(shù)據(jù)庫層比將已經(jīng)在運行的系統(tǒng)移植到新的數(shù)據(jù)庫解決方案上更為常見。
- 完整閱讀“ 企業(yè)應(yīng)用程序架構(gòu)的模式 ”,我將為您提供一個不錯的投資技巧。 您距離了解任何可用的ORM工具的核心概念還差50美元。 馬丁·福勒 ( Martin Fowler )的書對于任何企業(yè)開發(fā)人員都是必不可少的。 在線模式目錄是一個很好的預告片。
- 閱讀您的ORM文檔有些人認為他們的ORM工具是萬惡之源。 除非您花時間閱讀所有可用的文檔,否則,將很難馴服ORM數(shù)據(jù)層。 關(guān)系不匹配的對象一直是一個非常復雜的問題,但是它簡化了復雜對象樹結(jié)構(gòu)的CREATE / UPDATE / DELETE操作。 ORM的樂觀鎖定功能是解決“丟失的更新”問題的好方法 。
- 選擇和混合 JPA / Hibernate不能替代SQL。 您應(yīng)該充分利用JPA和SQL,并將它們組合成一個成功的解決方案。 由于SQL在任何非平凡的應(yīng)用程序中都是不可避免的,因此明智的做法是花一些時間(甚至是許可證)來使用功能強大的查詢框架 。 如果您擔心數(shù)據(jù)庫的可移植性使您無法使用專有的數(shù)據(jù)庫查詢功能,那么JPA / JOOQ混合泳是成功的秘訣。
休眠大師班
我已經(jīng)使用Hibernate已有將近十年了,我承認這并不是一件容易的事。 每天都會出現(xiàn)與StackOverflow Hibernate相關(guān)的問題。
這就是為什么我決定提出自己的Hibernate資料(我將在此博客和GitHub帳戶上共享)的原因,因為如果您愿意花費時間來學習它,那么您就不必為自己的努力而付費。 對于那些需要密集且個性化的Hibernate Master培訓的人,請隨時與我聯(lián)系。 我們將找到一種方法來培訓您。
翻譯自: https://www.javacodegeeks.com/2014/06/the-data-knowledge-stack.html
總結(jié)
- 上一篇: 针对新手的Java EE7和Maven项
- 下一篇: 在N + 1场景中使用@NamedEnt