diff --git a/source.html b/source.html index 5c65342cc..a42378338 100644 --- a/source.html +++ b/source.html @@ -31,14 +31,68 @@
与JPA相比,DataSource有以下几个特点:
- 1、提供非常方便过滤查询接口,但仅支持简单的表关联查询。
- 2、提供分布式的主键自增功能。
- 3、提供动态修改数据库连接参数功能。
- 4、提供读写分离的简易配置功能。
- 5、提供进程间缓存自动同步功能。
+ 1、简易的过滤查询接口,但仅支持简单的表关联查询。
+ 2、分布式的主键的分布式自增策略。
+ 3、动态更新变更后的数据库连接参数。
+ 4、读写分离的简易配置。
+ 5、进程间的缓存会自动同步。
+ 为了降低学习成本,DataSource重用了JPA里的部分注解与配置文件,使用方法基本相同,与JPA用法唯一区别是注解只能标记于字段,不能标记在方法上。
| 注 解 | 描 述 |
|---|---|
| javax.persistence.Cacheable | 标记Entity类是否需要缓存,与JPA用法一致 |
| javax.persistence.Column | 标记字段,只使用其name()、insertable()、updatable()属性 |
| javax.persistence.Entity | JPA的Entity类必须标记为@Entity, 而RedKale不强制要求,所以该注解一般无用 |
| javax.persistence.GeneratedValue | 仅用于标记主键是否为数据库自增长,其内值的两属性废弃 |
| javax.persistence.GenerationType | 被@GeneratedValue的属性引用,在RedKale内不被使用到 |
| javax.persistence.Id | 标记主键字段,与JPA用法一致 |
| javax.persistence.Table | 标记表的别名,与JPA用法一致 |
| javax.persistence.Transient | 标记是否为表对应的字段,与JPA用法一致 |
| 以下是RedKale自定义的注解 | |
| @VirtualEntity | 用于非数据库表对应的Entity类,且仅用于开启缓存模式的DataSource |
| @DistributeGenerator | 标记主键是否采用分布式自增长策略,不能与@GeneratedValue同用 |
| @DistributeTables | 当多个表的主键唯一性公用时需要该注解 |
| @FilterColumn | 用于FilterBean过滤类的字段设置 |
| @FilterJoinColumn | 用于FilterBean过滤类的关联表字段设置 |
| @FilterGroup | 用于FilterBean过滤类的过滤条件分组设置 |
未完待续……
<!-- 其配置算是标准的JPA配置文件的缩略版 -->
+<persistence>
+ <!-- 系统基本库 -->
+ <persistence-unit name="demouser">
+ <!-- 为NONE表示不启动缓存,@Cacheable 失效; 非NONE值(通常用ALL)表示开启缓存。 -->
+ <shared-cache-mode>NONE</shared-cache-mode>
+ <properties>
+ <property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/dbuser?characterEncoding=utf8"/>
+ <!--
+ javax.persistence.jdbc.driver在JPA的值是JDBC驱动,RedKale有所不同,值应该是javax.sql.DataSource的子类。
+ 为了兼容用户习惯,RedKale内置常见JDBC驱动到javax.sql.DataSource的映射关系:
+ com.mysql.jdbc.Driver —————— com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
+ org.mariadb.jdbc.Driver —————— org.mariadb.jdbc.MySQLDataSource
+ oracle.jdbc.driver.OracleDriver —————— oracle.jdbc.pool.OracleConnectionPoolDataSource
+ com.microsoft.sqlserver.jdbc.SQLServerDriver —————— com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource
+ 因此 com.mysql.jdbc.Driver 会被自动转换成 com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
+ -->
+ <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
+ <property name="javax.persistence.jdbc.user" value="root"/>
+ <property name="javax.persistence.jdbc.password" value="123456"/>
+ </properties>
+ </persistence-unit>
+ <!-- IM消息库 -->
+ <persistence-unit name="demoim">
+ <shared-cache-mode>NONE</shared-cache-mode>
+ <properties>
+ <!-- jdbc:mysql://127.0.0.1:3306/dbim?autoReconnect=true&autoReconnectForPools=true&characterEncoding=utf8 -->
+ <property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/dbim?characterEncoding=utf8"/>
+ <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
+ <property name="javax.persistence.jdbc.user" value="root"/>
+ <property name="javax.persistence.jdbc.password" value="123456"/>
+ </properties>
+ </persistence-unit>
+</persistence>