diff --git a/source.html b/source.html index 5c65342cc..a42378338 100644 --- a/source.html +++ b/source.html @@ -31,14 +31,68 @@

DataSource 入门

        与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.EntityJPA的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过滤类的过滤条件分组设置

未完待续……

+

persistence.xml 配置说明

+
<!-- 其配置算是标准的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&amp;autoReconnectForPools=true&amp;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>