大话Java持久层

基础知识储备:

  • Java SE(Java语言【java.lang】、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

NOSql:非关系型数据库

redis
mongoDB

缓存和非关系型数据库很像,都是提供数据的冗余保存,从而提升性能,而且都可以分布式的部署,达到高可用。两者有区别的地方,可能就在对数据结构和存储方式的差异。

RDBMS:关系型数据库

Oracle
MySQL
postgresql

大公司里,都会有专门的DBA去做高可用和性能上的架构,那是一块相对独立而且门槛较高的领域。作为应用开发的技术人员,虽然不用考虑底层的架构,但也仍需对自己写过的每一条sql负责,尤其是在轻型的架构中,底层更多的使用了原生的JDBC或myBatis,这些都需要程序员们自己些sql,当系统存在一条“无厘头”的sql时,再强大的架构也有可能被搞垮。

其他技术

MQ中间件,反向代理服务器
linux操作系统

参考

数据库相关中间件全家桶

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,733评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 1,647评论 0 3
  • 是谁来自山川湖海 却囿于昼夜 抑或是悲哀的嘲弄 带着灰尘的眼泪 是谁的不安与悒郁 发着暗涩的光 既然被播撒情欲的种...
    胡唐阅读 331评论 0 2
  • 今天被乐刻融资的消息刷屏,本来挺好一件健身行业幸事,理应祝福之。但是乐刻居然打出2017年全球要开5000家店的消...
    w_jeff阅读 7,852评论 1 4