1.4.2一般的ORM问题

来源:互联网 发布:淘宝卖家要身份证照片 编辑:程序博客网 时间:2024/06/06 16:26

下面所列的问题,被我们称之为O/R映射问题,同时这些问题也是由java开发环境中的对象映射工具解决的基础问题。一些ORM工具提供了许多其他的功能,但是下面问题列表只是列出了一些普遍的问题并不能覆盖所有的方面。

1 持久类到底是什么样子?是定义好的javabean?还是一些特定的组件像EJB?持久工具的透明程度是怎么样?为了使用这些持久类,我们是否需要更改业务层?

2 映射元数据是如何定义的?自从对象/关系之间的转换完全由元数据来管理之后,元数据的格式和定义就成为了其中的核心问题。ORM工具是不是需要提供GUI工具来维护元数据?又或者有更好的办法来定义元数据呢?

3 如何映射类的继承关系?有几种标准的策略。对于多态的关系,抽象类和接口又当如何实现呢?

4 对象的主体如何和数据库的主键相关联?如何把指定类的对象映射到特定的表的行?

5 在运行时,持久化逻辑如何和业务领域的对象进行联系?这是一个普遍性的问题,也有许多方法来解决,包括代码生成,运行时的反射,运行时字节码的自动生成,或者编译时增加字节码。这个问题的解决方案可能影响你的构建过程。

6 持久对象的生命周期是多久?一些对象的生命周期是否依赖于其他有着关联对象的生命周期?我们如何处理对象的生命周期和数据库之间的转换?

7 是否提供了关于排序、查找、聚集方面的工具?应用程序可以利用内存中的数据来完成一些事情,但是有时候为了提高关系技术的性能,需要将一些工作交给数据库来做。

8 如何有效通过联系来获得数据?高效的访问数据库常常需要通过连接表来完成。面向对象的程序则通过遍历对象图来访问数据。这两种数据访问模式都可以避免N+1的选择问题,但是同样的会带来笛卡尔积问题(一次访问获得过多数据)。

除此之外,任何数据访问都包含两种普遍的问题。这些问题在设计ORM过程中同样不能忽视:事务和同步;缓存管理。

正如你所看到的,完全的对象映射需要考虑一长串的问题。我们将在第3,4,5章来讨论Hibernate如何来处理这些问题,同时我们也会在本书中继续扩展这个主题。

到现在,你应该能够了解ORM的价值了。在下一节中,你将看到ORM带来的一些其他方面的好处。

原创粉丝点击