您的位置:首页 > 其它

Hibernate反向工程 使用试例

2015-10-21 16:10 267 查看
MyEclipse中的hibernate反向工程可以根据数据表自动为我们生成实体类,提高工作效率。

但是,hibernate中单向一对多,多对一,双向多对一关联底层的数据库结构是一样,

双向一对一,单向一对一关联的底层数据库也差不多。

所以在进行反向生成实体类时候需要在生成过程中进行一些设置来生成我们需要的关联关系。

首先必须在myeclipse中建立数据库连接和配置好hibernate环境,

Hibernate反向生成步骤:

在DB Browser中打开数据库连接选中要反向生成的表,单击右键,选择Hibernate Reverse Engineering。

注意:如果要生成单向的关联,只能逐个逐个表这样生成,如果同时选择多个,会自动生成双向的关联。



弹出以下对话框:



next:



Generate basic typed composite IDs:

如果数据库表格包含有多个列的主键, 将总是使用 <复合主键> 映射.

Generate version and timestamp tags:

如果启用, 名为 "version" 和 "timestamp" 的列将会在生成的映射文件中作为 <version> 和 <timestamp> 标记出现.

Enable many-to-many detection:

如果有连接表则生成双向多对多关联

Customized Type Mappings:

允许你来指定一个自定义的 JDBC 类型到 Hibernate 类型的转换, 使用 Length, Scale, Precision 和 Nullability 作为精度控制对应原来的 JDBC 类型.

next(这里是配置关联关系的关键):



这个说明以下各参数的作用:

Table details

这里下面可以定义实体类

Include referenced tables (A->B)

同时生成这个表引用的另外一个表的实体类

Include referenced tables (A<-B)

同时生成引用这个表的另外一个表的实体类

Generate support for ListedTable(fk)->UnlistedTable:

如果当前表格是一个从表,生成当前从表实体类到主表实体类访问

Generate support for UnlistedTable(fk)<- ListedTable:

如果当前实体类是一个主表,生成当前实体类到从表实体类访问

下面举例说明一下:

单向一对多关联,man访问多个phone

生成man实体类时候的设置(在生成的Man.hbm.xml中还需要把<set>中inverse=“true”删除):



生成phone实体类时候的设置(勾选Exclude column from reverse engineering表示实体类中不生成manId属性):



单向多对一关联,多个phone可以访问man

生成man实体类时候的设置:



生成phone实体类时候的设置:



双向一对多关联:

同时选中man和phone表,反向生成时候同时勾选Generate support for ListedTable(fk)->UnlistedTable和Generate support for UnlistedTable(fk)<- ListedTable就可以了,系统会默认让多的一端控制关联关系。

总结:反向生成实体类后还应该检查一下生成的实体类和配置文件是否符合要求,是否需要改动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: