gpt4 book ai didi

java - 使用具有相同 hibernate 映射文件的两个不同数据库

转载 作者:行者123 更新时间:2023-11-29 04:31:30 25 4
gpt4 key购买 nike

基本上,这个想法是为两个不同的底层数据库使用相同的 hibernate 映射文件。在生产中,底层数据库是 MySQL5,出于测试目的,我想使用 Apache Derby——以避免为测试目的设置和维护各种 MySQL 数据库。

我希望只需切换 DataSource 的驱动程序并更改一些参数就可以完成这项工作,但我已经遇到了一些小困难。所以实际上有两个问题。第一个具体问题是:

我。如果数据类型在 MySQL 中可用但在 Derby 中不可用,是否可以告诉 Derby 使用哪种数据类型。映射如下:

  <property name="about">
<column name="`about`" not-null="false" sql-type="text"></column>
</property>

Derby 不知道 sql 类型的“文本”,因此它拒绝创建表。它是 Derby 10.4.2.0 和 Hibernate 3.2.6。顺便说一下。

二。您在测试和生产中使用两个不同的数据库有什么经验?我知道有一些缺点,例如您无法测试存储过程或特定于数据库的查询 - 但另一方面,它使测试更容易和更快(如果您最终让它运行)。你怎么看?

最佳答案

问题 #1 - 不要指定 sql 类型;使用 Hibernate type相反:

<property name="about" type="string" length="4096"/>

然后,您可以扩展 Hibernate 提供的 Derby(或 MySQL)方言,以根据(未)指定的长度将该类型映射到适当的 DB 类型。以 MySQLDialect 为例;它根据长度将字符串类型映射到 varchar 或其中一种 text 类型。

问题 #2 - 您的意思是使用不同的数据库进行开发和生产吗?因为使用不同的数据库进行测试 和生产就像玩俄罗斯轮盘赌,桶装满了 - 你赢不了 :-)

您始终需要测试所有适用的部署配置。如果您确实需要同时支持开发和生产,那么使用不同的数据库是一个不错的方法,因为它有助于及早定位可移植性问题。

关于java - 使用具有相同 hibernate 映射文件的两个不同数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1710227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com