J2EE框架问题
本来打算一起提问的,但是想起来之前一个前辈提醒我问题最好分开问。
实习一个多月了,接触了两个项目打了打酱油。
第一个项目框架 SpringMVC+Spring+Hibernate+PgSQL
第二个用到了 SpringMVC+Spring+Mybatis+MySQL 也用到了Hessian来管理分布式。
但是不知道为什么采用其中的某一种框架以及为何采用这种搭配。
如果大家有在实际开发中体会到某一框架优缺点,或者有什么惨痛的教训,都可以说哈~
Thanks.
spring-mvc hibernate 框架 java-ee spring
Answers
转载:
Hibernate vs MyBatis
Hibernate更加自动化,我们只需要使用面向对象的API就行,它能帮我们生成最终执行的SQL语句.
而MyBatis相对来说比较半自动化了,需要我们手工编写SQL语句,还需要我们建立一个Java对象映射.
不过我(阿里巴巴公司系统架构师-黄勇)个人更加倾向于MyBatis,
因为我们能控制的地方会更多,其实太自动化了有时不太好.
JeeSite为何使用MyBatis?
http://jeesite.com/
1.学习成本:
Hibernate的真正掌握要比Mybatis来得难不少。
Mybatis框架相对简单很容易上手,也更加灵活。
对于学习过Hibernate的用户,学习起MyBatis也更容易上手。
2.开发成本:
大家都说Hibernate开发效率高,个人认为MyBatis的开发效率并不比Hibernate低,
通过代码生成器和封装开发效率不是问题,并且MyBatis可控性比较高,并更易于维护。
3.性能方面:
由于Hibernate比较难以掌握,性能方面也成为了Hibernate的问题瓶颈,
当然如果你对Hibernate非常熟,Hibernate性能上定不是问题。
但对于大多数情况下,真正掌握Hibernate的人少之又少,然而的也就造就了项目风险加大。
4.多数据库支持:
有些人说MyBatis对多数据库支持困难,我认为这个不是问题,
虽说目前JeeSite仅提供对MySQL和Oracle数据库的支持,
但对于支持其它数据库的改动也不是很麻烦,
SQL是被专门写在XML中,对于大多数SQL来说都是通用的,
对于不同的数据库可通过dbName区分和修改各别的SQL片段即可。
Spring和SpringMVC没啥好说的,万金油。
主要说下MyBatis和Hibernate的区别,Hibernate是完善的ORM解决方案,Mybatis是半个ORM。
用Hibernate,你不用写SQL,用Mybatis你得写SQL(简单的CRUD可以用工具生成)。
看起来Hibernate更爽是吧,把JDBC完全封装了,然后我们就“面向对象”编程了!
可理想是美好的,现实是残酷的。 有些时候,业务模型很复杂(一个表几百个字段,而且还是映射到多个业务模型对象),用纯粹的ORM来做,你会发现很吃力,而且会有受到束缚的感觉,当然如果是精通hibernate的大牛另当别论,可是“理想是美好的,现实是残酷的”,现实项目中哪有那么多大牛?,MyBatis的优点在于其将控制权更直接交到了开发者手中,对!就是SQL语句。
如果项目团队的技术素养高,数据库模型设计得好,可以上hibernate,反之应优先考虑Mybatis。