JAVA编程:robbin:我为何要进修Hibernate?
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。robbin
在我做过的良多项目标过程当中,我一向有一个悬而未决的成绩在困扰我,那就是耐久层的开辟。耐久层的开辟一样平常来讲要末用CMP,要末用JDBC+DAO。CMP就不必说了,它对我来讲是一种失利的理论,而JDBC+DAO也存在良多的坚苦,我很难做到把干系表纪录完全的映照到耐久对象的干系下去,这次要表现在多表的干系没法间接映照到对耐久对象的映照下去,多是一个表映照多个耐久对象,有多是多个表映照一个耐久对象,更有大概的是表的某些字段映照到一个耐久对象,可是别的一些字段映照到其余耐久对象上。并且即便这些成绩都处置好了,也不克不及间接依照对象的体例来对耐久对象(PO)编程,由于存在1:N干系的耐久对象的查询实在就是1+n次对数据库的SQL,我已经有一次失利的耐久层计划,了局是某个联系关系良多别的耐久对象的PO一查询就是5n+1次sql,速率慢的不得了,最初不能不全部修正底层计划,最初即是是完整丢弃了对象计划,完整是依照表字段举行操纵。可是如许做十分舒服,由于体系的计划是从需求计划,体系计划如许自顶而下的,了局都到了具体计划阶段了,被耐久层映照成绩限定,不能不自底向上修正计划计划,又回到了依照历程举行编程的老路下去,十分的糟。我对这个成绩思索了好久,最初终究意想到这实际上是一个很典范的成绩:对象和干系的映照成绩。实践上自从OOP编程盛行今后,就存在这个困难了,以是才有人提出干系数据库举行从头计划,改用对象数据库,但实践上干系数据库并没有被减少,因而就只能在下层的使用层找办理计划。这时候候我分明了我必要的实践上是一种ORM产物。我最早想到的ORM就是JDO,因而我下载了两个JDO产物,筹办仔细的进修一下,可是研讨了一段工夫以后,我发明我对JDO十分的扫兴,缘故原由以下:1、JDO没有一个好的开源收费完成,好的产物都是贸易产物,而且在国际没有发卖和手艺撑持。这就形成了JDO只要进修之用,不克不及把它用在实践项目中,不然的话,你把软件卖给客户的时分,还要告知他,你还要别的往买一个外洋的软件产物,而且在国际没有手艺撑持,出了耐久层的成绩,我们也办理不了,请你本人打国际远程往办理成绩,你以为客户能允许吗?2、JDO不是一个轻量级封装,它试图创建一个完全的耐久层框架,可是还很不完美,形成了JDO感到对照粗笨,良多操纵体例使人以为啰嗦和乖僻。这减轻了程序员进修和编程的包袱,并且封装的太多会形成一个严峻的成绩就是一旦呈现报错信息,调试起来十分坚苦,你很难正确的定位毛病事实出在那里,封装的越轻,成绩越简单定位,越简单办理,封装的越重,成绩越庞大,越找不到缘故原由,CMP就是一个很好的例子,出了毛病,调试起来十分坚苦和贫苦。3、JDO的尺度很不完美,存在严重缺点。最次要的成绩表现在PO不克不及离开PM(相称于Hibernate的Session)而存在,这是个十分严峻的成绩,会形成编程的时分举行大批VO的拷贝操纵,啰嗦极了;别的一个严重缺点是静态的POJO的Enhancer,不克不及运转期静态Enhance,没法举行增量编译和调试,编程和调试起来十分啰嗦,每次都要手共运转一个工具对POJO举行Enhance;别的另有一些缺点,比方JDOQL不完美,映照干系的表达不敷壮大等等。4、JDO产物的决裂。这个成绩也对照严峻,因为JDO1.0尺度的缺点,而JDO2.0尺度还指日可待,而各个JDO厂商为了可以在合作中锋芒毕露,那末除在易操纵性和功能上的进步以外,想要吸引客户,就必需有本人的产物特征。那末1.0尺度的缺点恰好给了他们发扬的舞台,每一个厂商城市有本人独到的办理计划来办理尺度的缺点,但是这却形成了JDO产物现实上的决裂。这类决裂严峻到甚么水平?我能够复杂举个例子:你写好的POJO,用一种JDO的Enhancer举行Enhance过今后失掉的PO,在另外一个JDO产物上跑不起来。这很像昔时Unix的决裂,了局就是二进制代码级的不兼容,而只能在C源代码级兼容。如今的JDO也有如许的趋向,就像AppServer的不同一样,一个在Weblogic上开辟好的EJB,移植到Websphere,你必定必要从头举行设置。我心目中的ORM最好有以下的特性:1、开源和收费的License,我能够在必要的时分研讨源代码,改写源代码,举行功效的定制。2、轻量级封装,制止引进过量庞大的成绩,调试简单,也加重程序员的包袱。3、具有可扩大性,API开放,当自己功效不敷用的时分,能够本人遍码举行扩大。4、开辟者活泼,产物有不乱的开展保证。丢弃了JDO今后,我依据下面的准绳,前后扫除了TopLink,CocoBase,Castor等,最初选择了ApacheOJB和Hibernate。OJB的扫除很简单做出,一是由于它的文档太复杂,太少;二是由于OJB企图下一个版本周全撑持JDO,它的API会有严重变化,以是现阶段进修OJB是个毛病,等它的API不乱了今后再进修不迟。Hibernate的发明是很偶尔的事变,只是在他人提到JDO的产物中,附带提了提罢了,但当我入手下手研讨Hibernate以后,我发明终究找到了我朝思暮想的ORM了。Hibernate完整切合我下面提到的尺度以外,也办理失落了JDO的一切缺点,并且体例之文雅使人惊叹。Hibernate的文档也长短常十分有特征的中央,它不单单是Hibernate的功效先容那末复杂,它实践上是一个耐久层计划的最好理论的履历总结,文档内里的例子,文档内里的总结全体都是最好计划的结晶。我仔细的把Hibernate读上去的感到就是,不但单把Hibernate把握住了,并且对耐久层的计划的履历都长了一年夜块,之前可历来没有以为耐久层的计划另有那末多的学问,也由此感到到Gavin相对是一个年夜牛人。固然选择Hibernate最最重用的缘故原由是Hibernate是一个我可以完完整全把握的了的软件。Hibernate的源代码十分少,并且写的十分简便,我总以为挺奇异的,这么少的源代码可以完成这么多的功效,是个事业。Hibernate的源代码树分的很分明复杂,源代码很易读,我一旦碰着文档中没有讲到的成绩,大概文档中提到可是我弄不分明的中央,我就往源代码中找,一切的成绩都名顿开,并且让我对Hibernate的运转道理和细节弄的出格分明,仿佛Hibernate就像本人写的代码一样,很分明的晓得,怎样写程序可让Hibernate运转效力最高,最省内存,程序出了毛病,很分明的晓得是甚么中央的成绩,怎样办理。以是用Hibernate让我出格宁神,
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的工具了吧! 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 Java 编程语言的风格十分接近C、C++语言。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 是一种使网页(Web Page)产生生动活泼画面的语言 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种语言,用以产生「小应用程序(Applet(s)) 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种使用者不需花费很多时间学习的语言
页:
[1]