菜鸟学hibernate
好多年前,曾经写了1个多月的hibernate代码,当时还不怎么会java,虽然有两门语言比较熟悉,但是毕竟java不熟悉很多东西都看不懂。记得当时组长逼我看的一本不记得名字的hibernate书,上面的反射都看不懂,什么映射也不懂,但是写代码却没难度,都是依葫芦画瓢嘛,你懂的。
当时看着别人很流畅的写出new一个对象,set两个属性,调用一下update方法,数据库竟然就修改了记录!我傻傻的写了快两个月的hql,竟然不知hibernate是如此的优雅。后来这位兄弟去了汉王科技,薪水当时还算中上了。
于是我就明白了两个道理:1会干活不代表你会写代码;2同样花一个月时间,认真看一本hibernate书也许比糊涂写一个月hibernate代码会让你更受企业青睐。
后来都没接触hibernate,全都忘光了,仅记得它有个save方法,因为当年网易的面试我回答了insert。但是受万同学影响,我最近觉得我应该对orm研究一下。于是我选择了hibernate。
这么多年过去了,我自认为已经不是当年的菜鸟,反射这些已经是耳熟能详的词语,现在让我学hibernate,我会怎么学呢?我想了一下,我不应该是从helloworld开始。而是先不要看任何hibernate的书,先想想我来设计一个orm,我会怎么设计。
设计完后(我怎么设计的就不丢人了),我再看hibernate是怎么设计的。看的时候让我惊讶的是,当年很晦涩难懂的都是一看就明白了,搞了这么多年数据库,数据库的增删改查的大部分困难都遇到过了,看到hibernate的解决方案会有一种一拍即合、惺惺相惜的感觉。我个人认为:有良好的数据库基础的,学orm应该是更为容易的!
基本SessionFactory、Session、save、update、delete、get、事务、分页、统计、类型转换这些我都想到了。当然更多的是我没想到的,比如load、比如两级缓存,我想了一下,这也许就是面试官为什么喜欢问这些。虽说知道了其实也没什么,但是让你去设计,确实不一定能设计成这样。
知道了原理就迫不及待搭个简单环境。竟然用了2小时!看来真要工多才能艺熟啊。感悟就是工具一定要好。像我用的myeclipse10,安装时都默认安装了hibernate的插件,全都基本都可以通过eclipse自动生成,连jar都不用到官网下载,时代真的变了。