这篇文章引用于知乎的一个author的观点,原文也是直接copy,我我的以为这篇文章最厉害的是最后的一段话,深入的见地啊!程序员
下面是原文:编程
Hibernate入门容易,掌握精通我也不敢自诩。我第一遍看Hibernate文档的时候也以为很吃力,但不是由于Hibernate难掌握而感到吃力,是由于Hibernate文档到处都是持久层设计的经验和最佳实践。
###adv### Hibernate文档准确的来讲,绝大部份内容都在讲对象的持久层设计,而不是简单的Hibernate使用,使用问题查Java doc就够了。因此学习Hibernate,主要是在学习持久层的设计模式,若是你把Hibernate文档都看完了,还成天只会提那些 Hibernate的配置问题,Hibernate的类调用问题,我以为这样的人尚未真正的入门,算是白学了。
我对Hibernate 的那些配置也不是特别纯熟,每次写hbm,都要对照文档一点点的检查;类调用参数也不太记得,写代码也要Java doc随时备查。
可是我在学习Hibernate的时候即集中全部精力来理解Hibernate的运行原理,集中精力来掌握持久层设计应该把握的原则和技巧,这些才对我是最重用的东西。绝不夸张的说,学习完Hibernate,我对JDBC的编程也提升了一大截,更不要说对于J2EE架构的持久层的框架设计,基本上是了然于胸了,即便未来换了API,不用Hibernate的,改用JDO,Castor什么的,这些经验同样照用。
学习Hibernate主要不是在学习Hibernat怎么配置,用工具怎么生成hbm文件,若是你把重点放在这里,基本上等于白学了Hibernate。Hibernate的精华在于无与伦比的灵巧的对象持久层设计,这些持久层设计经验不会由于你不用Hibernate而丧失掉,我本身学习Hibernate,已经明显感受到对持久层设计能力已经长了不少经验值了,这些经验甚至不光能够用在Java上,用在.net上也是同样。
因此Hibernate配置的学习,我只是简单看看,用的时候知道到那里去查就好了,一堆复杂的生成工具我根本就看都不去看,这样算下来,掌握Hibernate的配置,能够用Hibernate来替代JDBC写程序,不过花上3天时间就足够了。我想3天时间对你来讲不算很奢侈的学习代价吧。 为何我这么强调学习Hibernate的对象持久层设计理念呢?那就看你的理想是想一生作一个程序员呢?仍是想向更高的方向发展呢?从纯作技术的角度来讲,职业发展的最高点是“系统架构师”,Bill Gates不是还叫作微软的首席系统架构师吗?
System Architect职位须要的是你的学习和领悟能力,若是你不能把学习Hibernate获得的设计经验运用到其它地方,那么你是失败的,也没有资格作 System Architect。
无论JDO也好,Hibernate也好,TopLink也好,CocoBase也好,仍是Castor,仍是什么Torque,OJB,软件的使用和配置方法能够各异,但本质上都是ORM,都是对JDBC的对象持久层封装,因此万变不离其宗,若是你完整的学习和掌握Hibernate花了1个月的时间,那么你再学习OJB的时间不该该超过1个星期,由于你已经把对象持久层设计都了然于胸了,你须要的只是熟悉一下OJB的API和配置罢了,至于怎么运用OJB进行持久层的开发你早就已经熟悉了。
因此当你掌握了两种以上的ORM,你应该可以不拘于使用的ORM软件的限制,设计出适合于你的项目的持久层来,这才是System Architect的水准。
用金庸小说来打个比方来讲吧,张无忌学太极剑,只记剑意,不记剑招,这才是真正的高手,而低手就只会去学习剑招,而不去领会剑招背后蕴含的剑意,因此一生都是低手,永远不能真正学会太极剑。因此周颠看到张三丰第二次演示太极剑,招式彻底不一样就觉得是另外一套东西,其实本质上都同样。学习Hibernate也不要舍本逐末的去学各类五花八门的工具,重点掌握它的对象持久层设计理念。设计模式