grails - 如何将 2 个不同的项目连接到同一个开发环境数据库?

标签 grails grails-orm h2 grails-domain-class in-memory-database

我有 2 个项目 A 和 B

他们有一个名为“TABLE”的域类

A 将在“TABLE”中插入信息,B 必须选择它

我在第一个项目的 DataSource.groovy 中有这个配置:

enviroments{
    development{
       dataSource {
              url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
       }
    }
}

它在内存和端口 8110 中运行,我如何从其他应用程序访问该数据库?就像是
url="jdbc:h2:tcp://localhost:8110/mem:devDb" //?

最佳答案

只要应用程序的两个实例都可以访问数据库,应用程序运行的端口和位置就无关紧要。

根据您提供的少量信息,我假设您想要设置多个数据源。你可以去docs有关更多详细信息,但这里有一个预告片:

在 DataSource.groovy 中:

environments {
development {
    dataSource {
        // Connection parameters for the application specific dataSource
    }
    dataSource_common {
        // Connection parameters for the common dataSource
    }
}

// Copy and paste for other environments
}

在您的域类中:
class Table {
   // Domain Class properties

   static mapping = {
      datasource 'common'
   }
}

对于这两个应用程序,使 Table 类相同。当应用程序 A 保存 Table 的实例时,它将可用于两个应用程序。然后应用程序 B 可以从表中读取。

请注意:

让两个应用程序使用相同的数据源通常是不好的做法。上述说明解释了如何允许多个应用程序访问单个数据源,但不鼓励您这样做。

与其拥有一个公共(public)数据源,不如让应用程序 A 通过 RESTful 接口(interface)向对象 B 公开 Table 域类。这将减轻由 Hibernate 操作相同结构和数据集的两个实例引起的潜在冲突。

您可以在 docs 中找到有关 Grails RESTful 资源公开的更多详细信息。 .

关于grails - 如何将 2 个不同的项目连接到同一个开发环境数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697478/

相关文章:

Java/Grails : Send SMS from application

json - Grails:在映射构造函数中设置 transient 字段

spring-boot - RestfulController POST(save)方法中动态字段的映射

grails - 创建名称为 'transactionManager' : Cannot resolve reference to bean '' sessionFactory '' while setting bean property ' sessionFactory' 的 bean 时出错

java - H2 数据库模式创建检查

grails - 让grails生成没有渲染模板

grails - Grails上的Spring Security和带有领域的Tomcat Security

java - 为什么 Tomcat 会为我的应用程序打开那么多 Java 进程?

spring-boot - "JdbcSQLIntegrityConstraintViolationException: Unique index or primary key violation"升级到Spring Boot 2.7后出现异常

spring - 从 H2 控制台连接到 H2 数据库