2010-07-16 131 views
2

我需要一些更多信息。Java持久性框架

我正在开发一个小应用程序,它将与PHP web应用程序进行交互。我们整合的媒体服务器在Java中是可扩展的。

我需要在我们正在开发的插件内访问非常少的数据库,我只需要在大约10%的表中查看行。我只需要更新其中一个表格中的数据。

架构作为一个整体充满了外键,但目前(但很少有机会这样的变化在未来)我不需要修改任何其他信息,除了一列DATABSE(这是不一个外键)。

我真的不想模拟所有这些关系 - 因为没有必要。

我最好的选择是什么? Hibernate会让我映射所有这些域对象吗? myBatis(以前称为iBATIS)是一个更好的选择,因为我正在交付的人也更适合使用SQL?我选择哪个持久性框架有什么关系 - 它们是否都会让我对每个表格建模?

这些是mySQL InnoDB表,如果它有任何区别。

回答

2

Hibernate只要求你在Java应用程序的上下文中映射你想要使用的项目。因此,您只能将对象映射到您希望从Java端访问的那些表。

因为虽然过程中的一些注意事项:

  • 你将不得不对所有表的所有对象/关系与给定的实体表将交互
  • 事情可能是混乱的两个程序击中模型数据库在同一时间。虽然这是一个由Hibernate进行锁定的问题,但这种情况往往会在PHP中失败。
+0

由于不得不为每个涉及的表建模,所以使用myBatis更容易。不幸的是,所涉及的表格失去了控制,这基本上需要映射整个数据库,当我只需要在3个表上选择访问并在1上更新时,这是不必要的。 – Scott 2010-07-22 17:20:00

1

使用Hibernate,您只需要为将要使用的对象建模,并且ddl2hbm工具可能能够基于现有数据库为您生成Java类,具体取决于是否存在链接到模型的外键你将不会使用。

2

我真的无法谈论Hibernate,但myBatis不会让你模拟任何东西 - 只需创建一个包含你关心的属性的POJO,然后编写映射(直接sql)映射任何列的映射无论你想进入你的pojo表。