是否可以在 Grails 中使用只读的 JNDI 数据源?

发布于 2024-09-18 18:53:57 字数 408 浏览 7 评论 0原文

我需要将遗留数据库中的 JNDI 数据源添加到我的 Grails (1.2.2) 应用程序中。 到目前为止,该资源已添加到我的 Tomcat (5.5) 中,并且 DataSource.groovy 包含:

development {
    dataSource {
      jndiName = "jdbc/lrc_legacy_db"
    }
}

我还创建了一些映射不同表的域对象,以便使用 GORM 轻松加载和处理来自 DB 的数据。但我现在想保证,与该数据库的每个连接实际上都是只读的。我最关心的是 dbCreate 属性以及通过 GORM 和 GORM 类进行的自动数据库操作。

跳过 dbCreate 就足够了吗? 如何确保数据库只能被读取而永远不会以任何方式被操纵?

I need to add a JNDI datasource from a legacy database to my Grails (1.2.2) application.
So far, the resource is added to my Tomcat (5.5) and DataSource.groovy contains:

development {
    dataSource {
      jndiName = "jdbc/lrc_legacy_db"
    }
}

I also created some domain objects mapping the different tables to comfortably load and handle data from the DB with GORM. But I now want to assure, that every connection to this DB is really read-only. My biggest concern here is the dbCreate- property and the automatic database manipulation through GORM and the GORM classes.

Is it enough to just skip dbCreate?
How do I assure that the database will only be read and never ever manipulated in any way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人│生佛魔见 2024-09-25 18:53:57

您应该使用 验证dbCreate 的选项

编辑:该文档与我第一次发布此答案时有很大不同,因此该链接并不能完全让您到达解释验证选项的位置。快速查找将带您到达正确的位置。

You should use the validate option for dbCreate.

EDIT: The documentation is quite a bit different than when I first posted this answer so the link doesn't quite get you to where the validate option is explained. A quick find will get you to the right spot.

夕色琉璃 2024-09-25 18:53:57

根据 Grails 文档

如果您的应用程序需要读取但从不修改持久类的实例,则可以使用只读缓存

可以通过以下方式配置域类的只读缓存

: 1.启用缓存

将类似以下内容添加到DataSource .groovy

hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='org.hibernate.cache.EhCacheProvider'
}

2. 将缓存设为只读

对于每个域类,您需要将以下内容添加到 mapping 闭包中:

  static mapping = {
      cache usage:'read-only', include:'non-lazy'
  }

According to the Grails documentation:

If your application needs to read but never modify instances of a persistent class, a read-only cache may be used

A read-only cache for a domain class can be configured by

1. Enable Caching

Add something like the following to DataSource.groovy

hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='org.hibernate.cache.EhCacheProvider'
}

2. Make Cache Read-Only

For each domain class, you will need to add the following to the mapping closure:

  static mapping = {
      cache usage:'read-only', include:'non-lazy'
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文