我正在考虑编写一个工具,列出oracle数据库中的所有表。单击每个表的任何链接将加载该表中的数据。
通常我只是在代码中使用普通的旧jdbc和标准的sql查询或存储过程。到目前为止,这对我来说工作正常,但我想知道如果使用hibernate将有助于减少工作量。这也是学习hibernate的好方法。
如果hibernate可以提供帮助以及如何帮助,请告诉我。我可以想到以下推理
还有一些问题我不确定答案是什么。例如,我将使用的数据库已经很老了,并非所有表都有主键。阅读有关hibernate的教程,出现了以下问题
我也会对任何简单的教程感兴趣。我见过一对夫妇,但没有一个是打算让新手去做。
由于
有人可以提供hibernate变得非常宝贵的情况/示例场景
由于
答案 0 :(得分:6)
我认为Hibernate会增加你的工作量。 ORM表示对象,因此您必须编写对象以将Oracle表映射到。
我认为这不适合使用Hibernate。 JDBC适用于这种情况。如果您想学习Hibernate,请务必继续学习,但我可以考虑一些更合适的小问题。
答案 1 :(得分:2)
将Hibernate视为投资。就像学习西班牙语或武术一样。一开始很难,但是经过这次考验后,你将获得巨大的收益。
回答你的问题:
您可以使用Hibernate所需的任何主键
Hibernate不支持没有主键的表,但为什么你会想要呢?
支持复合键
考虑在Action中购买Hibernate。从那里开始。
答案 2 :(得分:2)
通常我只是在代码中使用普通的旧jdbc和标准的sql查询或存储过程。到目前为止,这对我来说还不错,但我想知道使用hibernate是否有助于减少工作量。
使用JDBC实现这一点非常简单,如果使用DatabaseMetaData
和ResultSetMetaData
动态执行操作,则不需要编写许多查询。
使用Hibernate,您必须从物理模型生成实体。这是可能的,Hibernate为此提供了工具。但是我不相信Hibernate会给你带来任何好处(不是CRUD应用程序,JDBC会起作用)。所以我同意@duffy,Hibernate甚至可能会给你更多的工作。
这也是学习hibernate的好方法。
我能理解。但在我看来,这不是学习Hibernate的最佳应用程序。
所有表都必须有一个名为“id”的主键吗?我的表中没有一个名为id的列。主键名为其他
不,这不是必需的,您可以将任何列名映射为主键。
表必须有主键吗?并非所有表都有主键。特别是有常设数据的表格。
如果您没有任何唯一列,那么这将是一个问题,Hibernate希望实体具有标识符。
某些表将主键作为复合键(主键由2列组成)。
支持。
答案 3 :(得分:0)
在某些情况下,我们选择对主键使用唯一约束来提高性能,尤其是在与任何其他表无关的表上。在某些情况下,我们避免使用主键,甚至规范化表以防止创建唯一索引,并且在发生更改时需要Oracle更新和重新计算索引。
我不是dba,我知道有几个支持和反对使用主键的论据,但我现在真的不想进入。
说实话,我想使用hibernate的原因纯粹是为了我自己的利益,因为我想学习如何使用它。鉴于我有机会编写这个工具,并且它不是一个关键任务工具,只会在“内部”使用我决定我应该尝试休眠并通过学习它我可能会发现它有用,如果我需要它在其他项目上。
我目前没有要求写入数据库,所以生病只能从数据库中读取。由于并非所有表都有主键,是否可以使用唯一列作为主键来欺骗休眠?我认为有可能创建VIEWS并在视图中为没有主键或唯一约束的表添加id列。