Hibernate 官方的介绍,大家给解读一下

Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier. However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects.

这段意思是:
如果业务逻辑写在存储过程中,Hibernate不适用。

如果是面向对象的领域模型,并且业务逻辑写在中间层,适合使用Hibernate。

他们没有意识到,将业务逻辑从领域模型中分离出,写在中间层,这个领域模型其实是个贫血模型,也就是说,Hibernate适合贫血模型,而不是真正面向对象的领域模型。

真正的对象是什么?不只是有对象的属性,还有对象的行为(这个行为不是属性的setter/getter),这才是完整对象。

当Java 8的lambda来了以后,是否需要这些ORM框架还是个问题,如下是获得一个符合条件的查询:


long result = stream(connection, "select TEST_ID from TEST_TABLE")
.filter((t) -> t.asInt(
"TEST_ID") % 2 == 0)
.limit(100)
.count();

如果把SQL看成类似微软的LinQ,那么结合函数风格,一个符合DDD的criteria可以直接书写,无需什么持久层框架了。

http://www.jdon.com/idea/java/java-8-lambda-jdbc.html

以上个人观点。

[该贴被banq于2013-12-06 11:39修改过]
[该贴被banq于2013-12-06 11:40修改过]

谢谢您,很多意见
我是在看一个开源的项目:BroadleafCommerce,关于电商的,做了很多年了。看到这个项目在用,初学。在看Hibernate 官方的文档的时候,我点疑惑。
但是为什么Hibernate被大量的采用?
有其他代替的方案吗?


2013-12-06 12:07 "@
sinaID30957"的内容
但是为什么Hibernate被大量的采用?
有其他代替的方案吗? ...

呵呵,那是在走弯路,著名面向对象大师MartinFowler说,这是类似美国打的一场越战,采用的人多只代表在越战上牺牲的人越多,建议参考MF的文章:http://www.jdon.com/43937

对象和关系数据库存在天然阻抗,试图调和总是带来复杂性
这句话的意思是,ORM产品不可能做的更好吗?

就像去超市常用的塑料袋子,这个是多么伟大的一个发明啊。但是现在最头痛的问题如何处理这些塑料袋子,不易分解,焚烧有毒。但是我想这个塑料袋子发明出来时候很伟大,现在看来确相反,以后说不定。以后科技发达了说不定可以找到合适无污染的处理方式。