当前位置:  开发笔记 > 编程语言 > 正文

何时使用Hibernate/JPA/Toplink?

如何解决《何时使用Hibernate/JPA/Toplink?》经验,为你挑选了1个好方法。

现在我正在制作一个非常简单的网站 - 大约5页.问题是,如果它是过度的,值得花时间集成某种数据库映射解决方案,或者如果只使用普通的旧JNDI会更好.我可能需要从数据库中读取/写入十几件东西.我想我对这些技术有基本的了解,但仍需要大量参考文档.还有其他人面临过这个决定吗?

编辑:对不起,我应该指定JNDI来查找数据库连接和JDBC来执行操作.



1> OscarRyz..:

简短回答:这取决于您想要支持的复杂性.

答案很长:

首先,ORM(对象关系映射 - 您称之为数据库映射 - )和JNDI(Java命名和目录接口)是两回事.

您已经知道的第一个用于将数据库表映射到类和对象.第二种是为资源提供查找机制,它们可以是DataSources,Ejb,Queues或其他.

也许你的意思是"JDBC".

至于你的问题:如果这很简单可能没有必要实现ORM.数字表最多约为5-10,我猜这些操作非常简单.

可能使用普通的JDBC就足够了.

如果您使用DAO模式,您可以稍后更改它以支持ORM策略(如果需要).

像这样:假设你有Employee表

您可以手动创建带有DB的所有字段的Employee.java(它不应该花太长时间),使用以下方法创建EmployeeDaO.java:

+findById( id ): Employee
+insert( Employee ) 
+update( Employee )
+delete( Employee ) 
+findAll():List

实施非常简单:

select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc 

当(和If)您的应用程序变得过于复杂时,您可能会更改DAO实现.例如,在"select"方法中,您可以更改代码以使用执行操作的ORM对象.

public Employee selectById( int id ) {
      // Commenting out the previous implementation...
      // String query = select * from employee where id = ? 
      // execute( query )  

      // Using the ORM solution

       Session session = getSession();
       Employee e = ( Employee ) session.get( Employee.clas, id );
       return e;
}

这只是一个例子,在现实生活中你可以让抽象工厂创建ORM DAO,但这是offtopic.重点是您可以从简单开始,并且通过使用设计模式,您可以在以后根据需要更改实施.

当然,如果你想学习这项技术,你甚至可以用一张桌子来开始学习.

选择一种或另一种(ORM解决方案)主要取决于您使用的技术.例如,对于JBoss或其他开源产品,Hibernate非常棒.它是开源的,有很多资源可供学习.但是如果你正在使用已经有Toplink的东西(比如oracle应用服务器),或者如果基础已经建立在Toplink上,你应该继续使用该框架.

顺便说一句,自甲骨文收购BEA以来,他们表示他们正在用现在所谓的"Oracle Weblogic Application Server"中的toplink取代Kodo(weblogic peresistence framework).

我给你留下了一些资源,你可以从中获得更多信息:


在这本"企业应用程序架构模式"一书中,Martin Fowler解释了在哪里使用,这是目录.看看数据源架构模式与对象关系行为模式:

PEAA目录


DAO(数据访问对象)是核心J2EE模式目录的一部分:

DAO模式


这是Hibernate的入门教程:

过冬


Toplink的官方页面:

排名靠前


最后,我"认为"JPA的好想法是你最近可能会改变提供者.

从简单开始然后进化.

我希望这有帮助.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有