0

我有一个项目,我要将带有@Entity注释的 bean 放入其中,但相关实体的表将位于外部数据库中,我不会在启动时构建数据库,它将成为外部数据库。这可能吗?Spring-JPA 项目能否连接、写入和读取,与它没有从该实体 bean 构建表的外部数据库相关联?例如,我entityManager.save(myentity)还将在项目中有一个实体类:@Entity class MyEntity{}。这可能吗?即使 JPA 或 Spring 没有自己构建数据库,它们也能知道实体吗?

4

1 回答 1

2

是的,这是可能的。您只需要正确配置您的实体。

Spring Data JPA 数据库访问

Spring JPA,以及所有其他基于 JDBC 的框架总是连接到本地或外部数据库,我知道您认为数据库需要由应用程序创建,而在大多数情况下不需要。在部署应用程序时,您可以选择创建表或更新列或外键,但发生的情况是 hibernate 创建一个脚本并在 hibernate 模板上的现有数据库上执行。

ORM 概念

ORM 是从关系数据库中提供映射和 OO 视图的概念。当您创建一个@Entity class Example时,您告诉 java 这将是您数据库上的一个表,该表将存在一个名为 的表Example,或者更好: @Entity @Table('TB_EXAMPLE') class Example将建立类ExampleTB_EXAMPLE表之间的关系。

因此,您实际上不需要担心数据库是如何创建的,而是您将如何映射实体以反映代码中的表。请记住,您必须提供实体的映射以及 JPA 执行操作的所有信息。如果数据库已经存在,您需要查看列和表名以正确映射您的实体。

此外,还有一些工具可以进行逆向工程以从现有数据库创建 Java 类。为此,请查看Hibernate Tools for eclipse。

保存、阅读、更新和删除。

如果您正确地将实体映射到数据库,则可以毫无问题地执行所有操作。在上述示例中,调用将在您的数据库中entityManager.save(example)创建一个条目。TB_EXAMPLE这个表的创建方式并不重要,它可能是由部署时的休眠脚本创建的,或者是在 2004 年创建的现有数据库。

您可以在此处和此处查看ORM。这是完全理解所有概念的最佳方式。

于 2013-05-31T04:03:19.347 回答