实际的项目开发中, 我们可能需要根据已有的数据库模型来创建Cayenne的配置文件和相关的实体类. 此时可以使用CayenneModeler的Reengineer工具来直接生成相关的文件.
下面将演示如何使用CayenneModeler Reengineer 来进行数据库逆向工程.
Reengineer Database Schema
- 启动CayenneModeler, 新建一个工程 ( File > New Project )
- 选择 Reengineer Database Schema 菜单 ( Tools > Reengineer Database Schema )
- 点击如下图中红色箭头所示的按键, 创建一个数据源 (DataSource)
- 在 “Edit Preferences” 窗口中点击 “New”, 创建一个本地数据源 (Local DataSource). 填写数据源名称 (Name), 并选择要使用的适配器 (Adapter).
若连接的是MySQL数据库, 可选择如下图所示的 “org.apache.caynne.dba.mysql.MySQLAdapter” 适配器.
本教程以MySQL数据库为例
- 在 “Local DataSources” 标签页中, 填写 JDBC Driver, DB URL, User Name 和 Password, 如下图所示:
- 同时注意检查如下配置:
(1) General 标签页中 File Encoding 选择 UTF-8
(2) ClassPath 标签页中, 点击 “Add Jar/Zip”, 选择数据库驱动程序 (如: mysql-connector-java-xxx.jar)
- 点击 “Save”, 返回上一窗口, 选择刚才新建的本地数据源. 此时可再次点击 “Saved DataSources” 后面的 “…” 按钮, 并点击弹出窗口中的 “Test” 按钮来测试数据源配置信息是否正确, 是否能成功连接数据库 
- 点击 “Continue”, 在弹出的 “Reengineer DB Schema: Select Options” 窗口 (如下图) 中可配置要映射哪些数据库表/视图. (Table Name Pattern 为 “%” 表示映射所有表/视图, 本例保留默认值, 未作更改)
- 点击 “Continue”, CayenneModeler 即会根据数据库模型自动生成 Cayenne 的 DbEntity 和 objEntity. 同时, 外键关系等信息也一同被映射回来了. (展开project节点, 可看到映射结果, 如下图所示)
创建 DataNode
DataNode 中保存了我们的程序与特定的某一个数据库连接的信息.
- 右键点击上图中的 “datamap” 节点, 选择 “create Data Node”, 创建一个DataNode. 
- 在出现的如下图所示的界面中配置 DataNode 信息. 其中 DataNode Configuration 中保持默认值, 主要进行JDBC Configuration的配置. - Cayenne自带数据库连接池, 下图中 - Min Connections和- Max Connections即分别是连接池的最小连接数与最大连接数的配置.
- 再次选择 “datamap” 节点, 并对 datamap 进行配置, 可按如下步骤操作 (参看下图): 
(1) 在左侧树状视图中选中 “datamap”
(2) “DataMap Configuration” 中的 “DataNode” 选择刚才创建的DataNode
(3) “Entity Defaults” 中的 “Java Package” 填写实体类的包名 (最终生成的实体类将自动生成于此包中)
(4) 点击 “Java Package” 后的 “Update” 按钮.
- 至此 CayenneModeler 中的配置即算初步完成了.
保存配置信息
- 点击 CayenneModeler 工具栏中的保存按钮 (或选择菜单 File > Save)
- 将配置信息保存在 Java 工程的 src 目录下 (注意保存位置应在Java工程的src根目录)
生成实体类文件
- 选择主菜单项 Tools > Generate Classes, 生成实体类文件
- 在弹出的如下图所示的窗口中注意检查如下内容:
(1) Output Directory 应指向 Java 工程的 src 目录
(2) Classes 标签页中选中了所示实体类
下图箭头所指的 “SuperClass Package” 处为会在 “datamap” 的 “Java Package” 设置的包名后加上
.auto, 这并非错误. Cayenne会为实体类自动创建一个父类, 此处的SuperClass Package为父类包名 ( 参看: “Cayenne入门指南” )
- 点击 “Generate” 按钮即完成实体类文件的创建. (若你使用Eclipse, 则回到Eclipse, 刷新Java工程即可看到生成的配置文件和实体类文件)
好了, 现在快写一个测试程序, 测试一下Cayenne是否正常工作吧!
PS:
- 若数据库中表的主键为”自增长(Auto-incremented)”型, 注意在CayenneModeler中设置相应数据库对象 (DbEntity) 的 “PK Generation Strategy” 为 “Database-Generated”. 如下图:
- CayenneModeler生成的实体对象 (objEntity) 并未将主键字段直接映射为 objAttribute, 若程序中需直接通过类似 user.getId() 的方式获得主键值, 可在 CayenneModeler 中手动添加主键字段的映射. 如下图:
Revised on 2019/05/11 03:59:15 by Bailey
- 
                
                    Next PostWeb-lighter 简介
- 
                
                    Previous Post持久层框架 Cayenne 推介