从Spring-JPA项目中查看外部数据库

时间:2013-05-30 18:01:59

标签: spring jpa

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

1 个答案:

答案 0 :(得分:1)

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

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上创建一个条目。这个表的创建方式无关紧要,它可能是由部署的hibernate脚本或2004年创建的现有数据库创建的。

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