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

13-12-06 sinaID30957
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.

banq
2013-12-06 11:39
这段意思是:

如果业务逻辑写在存储过程中,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();
<p>

如果把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修改过]

sinaID30957
2013-12-06 12:07
谢谢您,很多意见

我是在看一个开源的项目:BroadleafCommerce,关于电商的,做了很多年了。看到这个项目在用,初学。在看Hibernate 官方的文档的时候,我点疑惑。

但是为什么Hibernate被大量的采用?

有其他代替的方案吗?

banq
2013-12-06 12:13

2013-12-06 12:07 "@

sinaID30957"的内容

但是为什么Hibernate被大量的采用?

有其他代替的方案吗? ...

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

sinaID30957
2013-12-06 12:32
对象和关系数据库存在天然阻抗,试图调和总是带来复杂性

这句话的意思是,ORM产品不可能做的更好吗?

猜你喜欢
2Go 1 2 下一页