Java 持久化技術棧


基礎知識儲備:
  • Java SE
    • Java語言(java.long.*)
    • Java集合框架(java.util.*)
    • Java I/O(java.io.*、java.nio.*.*)
    • Java 網絡(java.net.*、java.rmi.*、javax.net.*)
    • Java 並發(java.util.concurrent.*、java.util.concurrent.*.*)
 
實際上Jdk的內容非常多,除了上面提到的最常用的工具和方法,剩下的內容,比如像java security、java Swing、java awt等,可能平時不常用,但作為一名合格的程序員,那些都有必要了解。
 
  • Java EE
    • Servlet
    • JDBC
    • JPA
 
Servlet是現代web應用的基礎,基於其原理搭建的MVC框架,比如Spring MVC、Struts等,是我們這代Java工程師都一定會用到的。經典的Java EE容器Tomcat、Jetty等也是現在每天都會用到的工具,因此,Servlet技術一定要深入掌握。JDBC和JPA是Java持久層唯二的技術。JDBC更底層,更基礎,JPA則是針對ORM框架的接口規范。
Java EE覆蓋到企業開發的方方面面,但因為其臃腫的設計,已經越來越跟不上時代的腳步了,最近有傳言稱Oracle將放棄這項技術,但不論Java EE的前景如何,我上面提到的那三門技術,都不會輕易消失。
 
  • JVM
    • 操作字節碼:ASM、cglib、javassist
    • JVM的內存和體系結構
 
Java的語言的方方面面又都和JVM有關,但這部分內容我還不是很了解,以后在補充 //TODO
 
常用框架:
  • 數據庫連接池
    • Apache DBCP
    • Druid
    • Tomcat jdbc pool
    • HikariCP
 
不知道為什么,我對連接池技術一直情有獨鍾,當年接觸到的第一個連接池是c3p0,也正是從那是開始,我才有所謂“性能”、“效率”這些概念。“池”,是經典的以空間換時間的方式,提升程序效率的概念。“池”的應用非常廣泛,不光有數據庫連接池,還有線程池,緩存池等等。這項技術發展到現在已經非常穩定,普通公司的項目只要使用連接池,一般就沒什么問題。隨着時代的發展,連接池的功能也在不斷擴充,阿里的Druid就提供了sql監控的功能。所以現在看連接池是相關內容,就不能僅是為了實現功能(本來功能就不多),而是要深入的理解原理,並能夠自己動手實踐,開發出高效穩定的服務組件。
 
  • 持久層的中間件
    • ottor
    • yugong 
    • Cobar
    • Sharding - JDBC
    • myCat
 
Java持久層中間件通常分為兩類,一類是分庫分表,一類是數據遷移。前者是在融合了JDBC和數據庫連接池的基礎上,實現的面向數據庫的高級功能。當系統的數據量上升到一定級別之后,分庫分表是必然的選擇,使用中間件,就可以和應用分離,做到靈活的控制。而后者則是對Java I/O、並發技術的高級應用。一道經典的面試題是給你一個上GB的文件,問你如何快速的找到其中出現頻率最高的一組詞匯,或者問你如何快速的統計出一份報表。等你深入掌握了第二類框架的運行原理之后,這些都不是問題。
 
  • ORM框架
    • hibernate
    • myBatis
    • Jfinal
    • nutz   
 
SSH(Spring + Struts2 + Hibernate3)最火的時候,我剛剛工作,后來有人說hibernate不行了,大家都在用myBatis,於是緊跟着又有了SSM(myBatis)。再后來,“雲”、“微服務”成為當前最炙手可熱的概念,傳統的ORM框架也漸漸沒有了往日的熱度,大家都轉頭去搞自己的輕量級的ORM和MVC框架,國內比較著名的有Jfinal和nutz。ORM,實體映射成了老舊的代名詞.......但是,我不這么認為。現在打開 hibernate的官網,發現它保持的生命力,就在6月底,還發布了其最新的5.2.1版本。一個框架的成功都是有原因的,其中肯定有非常多值得學習的地方。只有你足夠了解它的時候,你才能准確的判斷,自己究竟需不需要它。
 
  • Spring
    • Spring JDBC 
    • Spring JPA
    • Spring DATA

其實看上文也知道,各種框架變來變去,但是Spring的核心統治地方,一直屹立不倒。能做到這點是一件非常了不起的事情,這和Spring一直堅持高效,堅持給程序員各式各樣的“糖果”有關系。漸漸的,在應用端,Spring已經有了一統天下的姿勢。上面僅列舉了Spring在Java持久層的工作,除此之外,還有很多內容,就不在這里一一列舉了。

  • 緩存
    • Ehcache
    • memcached
    • J2Cache
 
  • 非關系型數據庫
    • redis
    • mongoDB
 
緩存和非關系型數據庫很像,都是提供數據的冗余保存,從而提升性能,而且都可以分布式的部署,達到高可用。兩者有區別的地方,可能就在對數據結構和存儲方式的差異。
 
  • 關系型數據庫
    • Oracle
    • MySQL
    • postgresql
 
大公司里,都會有專門的DBA去做高可用和性能上的架構,那是一塊相對獨立而且門檻較高的領域。作為應用開發的技術人員,雖然不用考慮底層的架構,但也仍需對自己寫過的每一條sql負責,尤其是在輕型的架構中,底層更多的使用了原生的JDBC或myBatis,這些都需要程序員們自己些sql,當系統存在一條“無厘頭”的sql時,再強大的架構也有可能被搞垮。
 
其他技術
  • MQ中間件,反向代理服務器
  • linux操作系統
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM