当使用Hibernate / JPA / Toplink的?(When to use Hiberna

2019-07-31 08:03发布

现在我正在做约5页一个非常简单的网站 - 。 问题是,如果它是大材小用,值得集成某种形式的数据库映射解决方案的时候,或者它会更好,只是使用普通的旧JNDI。 我有大约一打的事情,我需要阅读/从数据库中写入。 我想我有这些技术的一个基本的了解,但它仍然需要占用大量的参考文档。 任何人都面临着之前的决定吗?

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

Answer 1:

答案很简单:这取决于你想要支持的复杂性。

长一点的回答:

首先,ORM( - 当你把它叫做数据库映射 - 对象关系映射)和JNDI(Java命名和目录接口)是两个不同的东西。

第一,你已经知道了,是用来映射数据库表到类和对象。 二是为资源提供的查找机制,它们可以是数据源,EJB,队列或其它。

也许你的意思“JDBC”。

现在,至于你的问题:如果是简单的可能是它不会有必要实施的ORM。 数表将在5 - 10最多,并且操作非常简单,我猜。

可能使用普通JDBC就足够了。

如果你使用DAO模式,你以后可能会改变它,如果需要支持ORM战略。

像这样的:假设你有一个Employee表

您创建Employee.java用手工所有数据库的字段(它不应该太长),并用类似方法EmployeeDaO.java:

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

和实现是相当简单:

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

当(如果)你的应用程序变得太复杂,你可以改变DAO实现。 例如,在“选择”方法更改为使用执行该操作的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;
}

这只是一个例子,在现实生活中,你可以让abstact工厂创建ORM DAO,但是这是offtopic。 问题的关键是,你可以从简单的开始,通过使用德兴模式如果需要的话,你以后可能会改变实现。

当然,如果你想学习技术,您可以用甚至1台分辩立即启动。

一个的选择或其他(ORM解决方案,)主要取决于您所使用的技术。 例如JBoss的或其他开源产品休眠是伟大的。 它是开源的,有大量的资源从哪里学到的。 但是,如果你正在使用的东西,已经有Toplink的(如Oracle应用服务器),或者如果基地已建成TopLink的,你应该留在这一框架。

顺便说一句,因为甲骨文收购BEA,他们表示,他们现在已经被称为“Oracle WebLogic应用服务器”与排名靠前的替代耕堂(weblogic的peresistence框架)。

我离开你一些资源,在那里你可以得到更多这方面的信息:


在这本书中,Martin Fowler的“企业应用架构模式”,说明在何处使用一种或另一种,这里是目录。 看一看数据源建筑模式与对象关系行为模式:

PEAA目录


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

DAO模式


这是Hibernate的首发教程:

过冬


Toplink的官方页面:

排名靠前


最后我“认为”很好的思考JPA的是,你可能最近更改供应商。

从简单的开始,然后发展。

我希望这有帮助。



Answer 2:

它似乎是这将是矫枉过正一个非常简单的应用,特别是如果你没有计划就它曾经扩大。 然而,这也似乎是它可以是值得让你有更好的理解他们是如何为下一次你有一些可以利用他们的工作时间使用那些与这个简单的应用。



Answer 3:

你的意思是老式的JDBC? 一个小项目可能是拿起ORM框架的一个很好的机会,特别是如果你有时间。

没有更多的信息很难提供建议拉上但是。



Answer 4:

我的经验法则是,如果它是只读的,我愿意这样做在JDBC,但我更喜欢使用SQLQuery对与一个空Hibernate项目采取Hibernate的类型映射的优势。 有一次,我要做的写,我去与Hibernate,因为它是如此容易得多设置的一些属性,然后调用保存,而不是单独设置每个列。 而当你要开始优化,以避免改变对象的更新,你是用OR / M和它的脏检查的方式更好。 与外键关系处理是,你需要一次映射,然后用干将另一个迹象。 同样的逻辑也适用于Toplink的,但除非他们已经添加了类似HQL在,因为我用它3年时,Hibernate会大大的这种转变从单纯的SQL更好。 请记住,你不必对每个对象/表,只是其中有一个明显的优势,那些地图。 根据我的经验,大部分项目不使用现有的或/ M最终建立一个新的,这是一个坏主意。



Answer 5:

学习ORM的最佳方式是在一个小项目。 启动这个项目。

一旦你得到了它的窍门,你会使用ORM的一切。

没有什么太小ORM。 你的第几个项目之后,你会发现,你不能工作的任何其他方式。 在ORM映射通常会使工作比几乎任何其他方式更有意义。



Answer 6:

看看这里的各种排名靠前的导游,他们介绍,例子,场景等

http://docs.oracle.com/cd/E14571_01/web.1111/b32441/toc.htm



文章来源: When to use Hibernate/JPA/Toplink?