Skip to content

Commit

Permalink
增加文档
Browse files Browse the repository at this point in the history
  • Loading branch information
entropy-cloud committed Aug 28, 2024
1 parent 114f16a commit 3298960
Show file tree
Hide file tree
Showing 12 changed files with 290 additions and 94 deletions.
2 changes: 1 addition & 1 deletion docs/dev-guide/orm/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

## [事务管理](transaction.md)

## [多数据源](multi-db.md)
## [多数据源](multi-datasource.md)

## [数据修改历史](data-change-log.md)

Expand Down
52 changes: 48 additions & 4 deletions docs/dev-guide/orm/multi-datasource.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,24 @@
多数据源配置介绍视频: [如何在ORM引擎中同时访问多个数据库](https://www.bilibili.com/video/BV1aX4y1Y7Xx/)

## 数据源管理
NopOrm引擎中每个querySpace对应于一个独立的DataSource。

可以配置多个DataSource,命名格式为 `nopDataSource_{querySpace}`。后缀名对应于querySpace

```xml
<bean id="nopDataSource_test"
class="com.zaxxer.hikari.HikariDataSource">
<constructor-arg index="0">
<bean class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="org.h2.Driver"/>
<property name="jdbcUrl" value="jdbc:h2:mem:test"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
<property name="maximumPoolSize" value="8"/>
</bean>
</constructor-arg>
</bean>
```

dao-defaults.beans.xml中配置了nopTransactionManager,它自动收集所有前缀为`nopDataSource_`的数据源定义

Expand All @@ -25,14 +43,14 @@ dao-defaults.beans.xml中配置了nopTransactionManager,它自动收集所有

## 使用多数据源

1. 在orm.xml的实体定义上可以配置querySpace
### 1. 在orm.xml的实体定义上可以配置querySpace

```xml

<entity name="xxx.NopAuthUser" querySpace="test">...</entity>
```

2. 在sql-lib中可以配置querySpace
### 2. 在sql-lib中可以配置querySpace

```xml

Expand All @@ -48,13 +66,39 @@ dao-defaults.beans.xml中配置了nopTransactionManager,它自动收集所有
</sql-lib>
```

3. 手工创建SQL对象并执行时可以指定querySpace
### 3. 手工创建SQL对象并执行时可以指定querySpace

```java
```javascript
SQL sql=SQL.begin().sql("select * from xxx where id=?",3).querySpace("test").end();
jdbcTemplate.findFirst(sql);
```

### 4. 直接为数据源指定dialect

一般情况下会根据DataSource获取到Connection,然后猜测得到对应的数据库方言。如果需要,也可以直接指定

```yaml
nop:
dao:
config:
query-space-to-dialect: test=h2gis
```
上面示例指定querySpace=test对应的数据源使用h2gis这个方言
## 数据库事务
在NopOrm引擎中,只有ormTemplate.flush()调用的时候才会执行数据库操作,只有在flush函数中才会真正打开JDBC事务。因此业务处理异常时一般还没有执行数据库更新动作,不涉及到数据库回滚的问题。
对于多数据源配置,我们可以配置多个querySpace对应于一个事务组,则提交的时候会先执行所有数据库访问操作,等所有数据库操作都执行成功之后再逐个commit。
```
nop.dao.config.txn-group-map= test=default
```

以上配置表示querySpace=test的数据库操作归属于default这个事务组


## Excel模型配置
在表配置中,增加一个【查询空间】配置,通过它可以指定querySpace

Expand Down
88 changes: 0 additions & 88 deletions docs/dev-guide/orm/multi-db.md

This file was deleted.

2 changes: 1 addition & 1 deletion docs/dev-guide/orm/transaction.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public class NopAuthUserBizModel extends CrudBizModel<NopAuthUser> {

## 多数据源事务

参见 [multi-db.md](multi-db.md)
参见 [multi-datasource.md](multi-datasource.md)

NopORM引擎支持同时使用多个数据源,例如一些表存放在数据库A中,另一些表存放在数据库B中,它们映射到实体对象后可以存在于同一个OrmSession中。
缺省情况下,所有的的数据源都属于同一个事务组(txnGroup=default),当打开事务的时候会认为打开的是事务组,然后不同数据源的事务都挂接在这一个事务组中。
Expand Down
Binary file modified docs/ppt/ref-images.pptx
Binary file not shown.
Loading

0 comments on commit 3298960

Please sign in to comment.