如何ORM工作?是对象序列化到BLOB的?

在Java中,是JDO仍去这样做的方法是什么?可还有什么?似乎有很多EJB,直接对象序列,和JDO。

的通话的
有帮助吗?

解决方案

要回答你的第一个问题,这里是休眠>,即表示,存在实现ORM各种方式:

  

<强>纯关系

     

在整个申请中,包括在   用户界面,设计时采用了   基于SQL的关系模型   关系操作。这种方法,   尽管它的不足之处为大   系统中,可以是一个很好的解决方案   对于简单的应用,其中低   代码重用的水平是可以容忍的。   直接SQL可以微调,每   方面,但缺点,如   缺乏可移植性和   可维护性,是显著,   尤其是从长远来看。   此类别的应用往往   大量使用存储过程,   移的一些工作出来的   业务层和数据库中。

     

<强>轻型对象映射

     

实体被表示为类   被手动地映射到   关系表。手工编码的SQL / JDBC   从业务逻辑隐藏   使用公知的设计模式。   这种做法是非常广泛   并成功的应用   用少量的实体,或   与一般的应用,   元数据驱动的数据模型。存储   程序可能在这种地方   类型的应用程序。

     

<强>中的对象映射

     

在应用程序被设计围绕   对象模型。 SQL是在产生   使用代码生成建立时间   工具,或在由框架代码运行。   对象之间的关联是   通过持久性支持   机构,和查询可以是   使用指定的面向对象的   表达式语言。对象是   由持久层高速缓存。一种   许多伟大的ORM产品和自产自销   持久层支持至少   这一级别的功能。很好   适合于中型的应用   一些复杂的交易,   特别是当之间的可移植性   不同的数据库产品是   重要。通常这些应用程序   不使用存储过程。

     

展开对象映射

     

完整对象映射支持   复杂的对象建模:   组合物,继承,   多态和“余辉   可达性。”持久层   实现透明的持久性;   持久化类没有继承任何   特殊的基类或有   实现一个特殊的接口。   高效的抓取策略(懒惰   和预先抓取)和缓存   战略的实施   透明的应用程序。这个   功能级别难言   通过自主开发的持久性实现   层,这相当于数月或数   年的发展时间。一个号码   商业和开源的Java ORM   工具已经实现了这个级别的   质量。这个水平符合   我们使用这个ORM的定义   书。让我们来看看这些问题,我们   希望通过工具来解决这   达到完全对象的映射。

其他提示

ORM =对象关系映射,对象的属性映射到列在realational数据库。该映射是任意的,这样做才能斑点,在实践中什么是最有用趋于自然映射 - 字符串到VARCHAR处理,诠释成整数等

JPA是寻找用于ORM一个标准的地方。 JPA代替EJB CMP方法,这被认为是累赘。 JPA允许你表达的映射作为Java注解,并且还允许在configutration文件进行指定的映射,支撑MULTIP [乐当数据库后者可能是有用的。

JPA具有查询语言,这样就可以构造查询针对对象的属性。

JPA由主要应用服务器厂商的支持并且还通过产品,如休眠。

我发现JPA相当不错的比EJB CMP的工作,更是这样。

我会建议仍在使用事务mamangement和安全EJB会话Bean的门面 - 基于注解的方法使EJB 3的办法的更容易比EJB 2使用,最小的编码开销

JDO实际上是标准的ORM太,和提供比JPA(1 + 2)的更完整的规范。 JPQL是RDBMS的概念,因此模仿SQL更集中。 JDOQL遵循Java语法,因此基于多个对象。取决于您的应用是否曾考虑从RDBMS走开。如果是这样那么JPA是不是要走的路。如果仅是为了RDBMS然后JPA绝对是一个考虑因素。

无论对象被序列化为BLOB的视配置。你可以这样做,对于复杂的对象类型,如果你愿意的话,但他们不会是可查询的。如果你代替天然形式坚持他们,那么你还可以查询他们,导致更有效的应用程序。

- 安迪(DataNucleus将 - JDO和JPA持久性)

scroll top