2012-07-12 57 views
1

给予一定的背景,您是否推荐JDBC或JPA用于大型应用程序?

  1. 我们有相当大的架构,包含上百个复杂的人际关系表的。
  2. 数据量也很大,数据的性质也相对较为敏感(财务)
  3. 当前架构是 - Java EE:会话Bean,DAO(JDBC)调用存储过程。
  4. 在数据库级别上,我们有一些复制机制来保持数据与前端数据库和后端数据库(托管在不同的盒子上)的数据一致。因此,应用程序将需要从前端数据库查找(读取)数据,如果不可用,请查看后端数据库。因此,按照JPA的条款,我们可能需要两个不同的EntityManagers实例。

可扩展性和性能都因为系统仍然在增长最关心的问题。

利用上述信息,没有任何人对是多么可行迁移到使用持久性框架如JPA应用程序的任何输入?在上述情况下,持久性框架有哪些挑战?

+0

没有“两个不同的EntityManagers实例”但是“两个持久性单元” – SJuan76 2012-07-12 18:56:52

+3

我的建议是:对于一个体积如此之大(似乎很关键)的系统,不要去寻找互联网上的建议。聘请一些有经验的顾问。 – SJuan76 2012-07-12 18:57:53

回答

1

我的经验是,一旦你过去几页,然后你结束了某种框架。这可以像交换数据地图一样简单,但对于使用类型安全的Java来说,可能会导致某种形式的映射框架。 Hibernate通过其JPA注释是迄今为止在Java领域最知名的,但当然还有其他实现。我也对Grails有了很好的体验,在实际中,Hibernate(默认情况下)使用了Hibernate,但当然这是一个完整的堆栈。

我建议你的高级团队需要一段时间才能从至少一些最有前途的替代的工作,一些例子,你做任何事情之前。

3

我@ SJuan76同意,你得到前人的精力有人采取了深入探讨您的架构,可提供更好的建议。但在任何情况下,这里有一些提示:

1)启动与映射。将您的实体映射为“正确的OOP方式”,并尝试通过调整映射来达到相同的模式。如果关系复杂,你可能会面临一些阻碍,在映射阶段最好处理它(而不是映射PoC的一小部分)。

2)不要担心Hibernate的性能。 Hibernate可能比任何内部JDBC框架更快。但是,如果您决定将业务逻辑从存储过程转移到Java代码,请查看性能更改。在转换它们时,您可能不得不转换思维方式,因为在SP内处理大量数据通常比将大量数据传送到应用层并在此处处理更快。

3)花些时间阅读Hibernate的书籍和文档。真。大多数时候人们抱怨Hibernate,这是因为他们不知道幕后发生了什么。

:-)

1

你提到你有存储过程祝你好运,那么就会出现一个问题,你希望你的项目或不重新实现最。

如果你不想这样做,那么忘掉JPA或Hibernate,在这种情况下,我建议你使用MyBatis(或iBatis)。

相关问题