实际的项目开发中, 我们可能需要根据已有的数据库模型来创建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 2020/05/27 03:56:46 by Bailey
-
Next PostWeb-lighter 简介
-
Previous Post持久层框架 Cayenne 推介