网站首页 > 开源技术 正文
默认情况下,所有模型共享一个数据源或者说是一个数据库,但是实际上你完全可以为不同的模型指定不同的数据源。
默认的配置是在grails-app/conf/application.yml中,看起来是这样的:
dataSource:
pooled: true
jmxExport: true
driverClassName: org.h2.Driver
username: sa
password:
environments:
development:
dataSource:
dbCreate: create-drop
url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
test:
dataSource:
dbCreate: update
url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
production:
dataSource:
dbCreate: update
url: jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
properties:
jmxEnabled: true
initialSize: 5
#########################################
为了配置其它数据源,你需要用到dataSources关键字,注意这是dataSource的复数形式,具体实现是这样的:
dataSource:
pooled: true
jmxExport: true
driverClassName: org.h2.Driver
username: sa
password:
dataSources:
lookup:
dialect: org.hibernate.dialect.MySQLInnoDBDialect
driverClassName: com.mysql.jdbc.Driver
username: lookup
password: secret
url: jdbc:mysql://localhost/lookup
dbCreate: update
environments:
development:
dataSources:
dataSource:
dbCreate: create-drop
url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
test:
dataSources:
dataSource:
dbCreate: update
url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
production:
dataSources:
dataSource:
dbCreate: update
url: jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
properties:
jmxEnabled: true
initialSize: 5
...
lookup:
dialect: org.hibernate.dialect.Oracle10gDialect
driverClassName: oracle.jdbc.driver.OracleDriver
username: lookup
password: secret
url: jdbc:oracle:thin:@localhost:1521:lookup
dbCreate: update
#########################################
简单说明一下,environments外部的配置是数据库默认配置,environments内部的配置是针对不同启动环境的指定配置。environments内部的配置,相对于其外部配置而言,优先级更高,即在内外部同时被配置的情况下,将使用内部的配置。一般情况下,environments外部的默认配置应写在environments之前。dataSource(无s)用于配置默认数据源,dataSources(有s)用于配置额外数据源。注意,代码中的lookup为自己随便定义的名,用于指代此数据源。题外话,你也可以使用依赖注入的方式去使用lookup数据源,代码如下:DataSource dataSource_lookup
#########################################
关于模型的配置,如果一个模型(domain)中没有数据源配置,则使用默认数据源'dataSource'。如果想指定数据源,则应该mapping中设置datasource属性为数据库名,如lookup,具体实现方法如下:
class ZipCode {
String code
static mapping = {
datasource 'lookup'
}
}
#########################################
一个模型可以两个或更多的数据源,关键字是datasources,具体实现方法如下:
class ZipCode {
String code
static mapping = {
datasources(['lookup', 'lookdown'])
}
}
#########################################
可用关键字'DEFAULT'指代默认数据源,例子如下:
class ZipCode {
String code
static mapping = {
datasources(['lookup', 'DEFAULT'])
}
}
#########################################
可用关键字'ALL'指代所有数据源,例子如下:
class ZipCode {
String code
static mapping = {
datasource 'ALL'
}
}
#########################################
模型中的命名空间,datasources(['lookup', 'lookdown'])中,第一个数据源是默认数据源,即lookup。
class ZipCode {
String code
static mapping = {
datasources(['lookup', 'lookdown'])
}
}
lookup,lookdown是数据源的别名,也可称其为命名空间,具体使用方法如下:
def zipCode = ZipCode.lookdown.get(1)
...
zipCode.lookdown.save()
#########################################
在事务中指定数据源,例子如下:
class DataService {
static datasource = 'lookup'
void someMethod(...) {
...
}
}
猜你喜欢
- 2024-10-05 新配色 KAI1 要来了!登场倒计时!(全新配色)
- 2024-10-05 龙虾回归!「熟龙虾」Dunk SB 首次曝光
- 2024-10-05 0门槛的自动化管理平台,不懂技术也能玩转DevOps
- 2024-10-05 为什么Java大神,都在看Spring Boot和Spring Cloud的书?
- 2024-10-05 TS「新倒钩」最新实物!网友:等不及了!
- 2024-10-05 不鸽了!元年「白蓝 AJ4」复刻日期曝光!
- 2024-10-05 新「白水泥」AJ3 实物首次曝光!发售日期有了
- 2024-10-05 TS「新倒钩」多款配色曝光!你喜欢哪个?
- 2024-10-05 Grails指南18配置之版本(grails中文参考手册)
- 2024-10-05 Grails指南02-入门之JDK安装(jdk安装教程菜鸟教程)
你 发表评论:
欢迎- 05-14WP8.1 GDR1的NTP时间同步没有解决问题
- 05-14抑郁症与焦虑症(四):补充色氨酸,5HTP的作用
- 05-14ntp服务器多久同步一次呢
- 05-14简单三步,轻松解决NVR时间不同步问题
- 05-14Linux的300+个真实运维场景——19 NTP 配置与管理
- 05-14海康威视录像机时间不准怎么办录像机无法查看回放录像,NTP校时
- 05-14安全加倍,解密极氪001电池安全技术
- 05-14海康威视录像机NTP服务器
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)