思路二:由数据库表,生成Mapping映射文件和POJO类。

虽然可以实现,但个人觉着先设计数据库,然后再生成类不符合Hibernate的面对对象持久化的思维方式。好了,还是说步骤吧,首先在test数据库建立两张表,分别为course表和teacher表

[sql] view plaincopyprint?
  1. -- ----------------------------
  2. -- Table structure for course
  3. -- ----------------------------
  4. DROP TABLE IF EXISTS `course`;
  5. CREATE TABLE `course` (
  6. `id` int(11) NOT NULL,
  7. `name` varchar(255) DEFAULT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  10. -- ----------------------------
  11. -- Table structure for teacher
  12. -- ----------------------------
  13. DROP TABLE IF EXISTS `teacher`;
  14. CREATE TABLE `teacher` (
  15. `id` int(11) NOT NULL,
  16. `name` varchar(255) DEFAULT NULL,
  17. PRIMARY KEY (`id`)
  18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

建好表后,在eclipse项目上右键-->new,如下图,选择框中的第三项,这个reveng.xml文件用于配置 选择要生成POJO类的数据库表。


选择上篇博客中创建的Console configuration项,点Database schema框下的refresh,之后可以看到test数据库,单击就出现了course和teacher表,全选后点击Include,之后点finish,如下图

再来到Hibernate Code Generation Configuration窗体,首先配置下Output directory输出目录,在尽挨着的复选框打上勾,然后在package栏写上生成文件要输出到哪个包,并选择刚配置好的reveng.xml文件

配置要输出的项,这里选定前两项,生成.java和.hbm.xml,就是我们想要的POJO类和Mapping映射文件。之后点击run就好了。

结果如下图:

生成的Mapping映射文件的代码

[html] view plaincopyprint?
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0 -->
  5. <hibernate-mapping>
  6. <class name="org.hibernate.test.Course" table="course" catalog="test">
  7. <id name="id" type="int">
  8. <column name="id" />
  9. <generator class="assigned" />
  10. </id>
  11. <many-to-one name="teacher" class="org.hibernate.test.Teacher" fetch="select">
  12. <column name="teacherId" not-null="true" />
  13. </many-to-one>
  14. <property name="name" type="string">
  15. <column name="name" />
  16. </property>
  17. </class>
  18. </hibernate-mapping>
[html] view plaincopyprint?
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0 -->
  5. <hibernate-mapping>
  6. <class name="org.hibernate.test.Teacher" table="teacher" catalog="test">
  7. <id name="id" type="int">
  8. <column name="id" />
  9. <generator class="assigned" />
  10. </id>
  11. <property name="name" type="string">
  12. <column name="name" />
  13. </property>
  14. <set name="courses" table="course" inverse="true" lazy="true" fetch="select">
  15. <key>
  16. <column name="teacherId" not-null="true" />
  17. </key>
  18. <one-to-many class="org.hibernate.test.Course" />
  19. </set>
  20. </class>
  21. </hibernate-mapping>

生成的POJO类:

[java] view plaincopyprint?
  1. package org.hibernate.test;
  2. // Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0
  3. /**
  4. * Course generated by hbm2java
  5. */
  6. public class Course implements java.io.Serializable {
  7. private int id;
  8. private Teacher teacher;
  9. private String name;
  10. public Course() {
  11. }
  12. public Course(int id, Teacher teacher) {
  13. this.id = id;
  14. this.teacher = teacher;
  15. }
  16. public Course(int id, Teacher teacher, String name) {
  17. this.id = id;
  18. this.teacher = teacher;
  19. this.name = name;
  20. }
  21. public int getId() {
  22. return this.id;
  23. }
  24. public void setId(int id) {
  25. this.id = id;
  26. }
  27. public Teacher getTeacher() {
  28. return this.teacher;
  29. }
  30. public void setTeacher(Teacher teacher) {
  31. this.teacher = teacher;
  32. }
  33. public String getName() {
  34. return this.name;
  35. }
  36. public void setName(String name) {
  37. this.name = name;
  38. }
  39. }
[java] view plaincopyprint?
  1. package org.hibernate.test;
  2. // Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0
  3. import java.util.HashSet;
  4. import java.util.Set;
  5. /**
  6. * Teacher generated by hbm2java
  7. */
  8. public class Teacher implements java.io.Serializable {
  9. private int id;
  10. private String name;
  11. private Set courses = new HashSet(0);
  12. public Teacher() {
  13. }
  14. public Teacher(int id) {
  15. this.id = id;
  16. }
  17. public Teacher(int id, String name, Set courses) {
  18. this.id = id;
  19. this.name = name;
  20. this.courses = courses;
  21. }
  22. public int getId() {
  23. return this.id;
  24. }
  25. public void setId(int id) {
  26. this.id = id;
  27. }
  28. public String getName() {
  29. return this.name;
  30. }
  31. public void setName(String name) {
  32. this.name = name;
  33. }
  34. public Set getCourses() {
  35. return this.courses;
  36. }
  37. public void setCourses(Set courses) {
  38. this.courses = courses;
  39. }
  40. }

到此我们就完成了由数据库表生成POJO类和Mapping映射文件的过程

思路三:由Mapping映射文件生成数据库DDL和POJO类

首先,新建一个Mapping文件,这里在项目中建立Department.hbm.xml。

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
  3. <hibernate-mapping>
  4. <class name="org.hibernate.test.Department" table="DEPARTMENT">
  5. <id name="id" type="int">
  6. <column name="ID" />
  7. <generator class="increment"></generator>
  8. </id>
  9. <property name="name" type="java.lang.String">
  10. <column name="NAME" />
  11. </property>
  12. </class>
  13. </hibernate-mapping>

接下来建一个新的Console Configuration文件,基本配置和上文中配置的过程一样,最关键的是加入mapping文件。

接下来,改下Hibernate Code Generation Configuration就好了,首选选择新配置的Console Configuration文件

接下来选择要生成的Schema和.Java文件,然后run就可以了。

最终结果如图:

生成的DDL代码为

[sql] view plaincopyprint?
  1. create table DEPARTMENT (ID integer not null, NAME varchar(255), primary key (ID));</span>

POJO类:

[java] view plaincopyprint?
  1. package org.hibernate.test;
  2. // Generated 2014-5-31 16:23:27 by Hibernate Tools 4.0.0
  3. /**
  4. * Department generated by hbm2java
  5. */
  6. public class Department implements java.io.Serializable {
  7. private int id;
  8. private String name;
  9. public Department() {
  10. }
  11. public Department(String name) {
  12. this.name = name;
  13. }
  14. public int getId() {
  15. return this.id;
  16. }
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20. public String getName() {
  21. return this.name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. }

好了,至此POJO类,Mapping文件和数据库表相互转化就都介绍完了,当然这是借助eclipse的插件实现的,熟悉使用ant的朋友也可以借助ant脚本来实现,具体的教程去google吧。这里推荐下HibernateTools的官方教程,包含了eclipse插件和ant脚本两种实现方式,非常全面。

基于eclipse和hiber的pojo、数据库表与mapping的相互转换(二)相关推荐

  1. 【精品】电商项目 中 基于SPU与SKU的 商品 数据库表设计

    简介 一般情况下我们使用5张表就可以解决基本的需求了: 商品分类表:category 商品表(即SPU表):表:product 商品规格表(即sku表):product_specs 属性key表:at ...

  2. 基于eclipse的android项目实战—博学谷(新功能二)欢迎界面倒计时

    在前面博学谷项目的基础上进行改善和增加新功能 源码资源下载:https://download.csdn.net/download/hyh17808770899/19844673 博学谷的第二个新功能: ...

  3. 基于Eclipse+Java+Swing+Mysql图书信息管理系统

    基于Eclipse+Java+Swing+Mysql图书信息管理系统 一.系统介绍 二.功能展示 1.主页 2.新增图书信息 3.删除图书信息 三.数据库 四.其他系统实现 五.获取源码 一.系统介绍 ...

  4. 基于Eclipse+Java+Swing+Mysql实现酒店管理系统

    基于Eclipse+Java+Swing+Mysql实现酒店管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.首页 3.开房 4.退房 5.房间信息 6.顾客信息 三.数据库 四.其它 1.其他 ...

  5. 基于eclipse的android项目实战—博学谷(二十三)其他功能

    本项目是用eclipse软件编写,经过我的亲自实践,其真实有效,希望能给您有所帮助 项目版本:android5.1.1 ADT版本:23.0.6 SDK版本:24.4.1 运行模拟器:夜神模拟器 若有 ...

  6. 第十三章 Delphi开发数据库应用程序概述(二)

    数据控制部件页上的部件,主要用于设计用户界面,对数据库中的数据进行浏览.编辑.插入.删除等操作.因而数据控制部件常常又被称为数据浏览部件,数据控制部件其实是在Standard页上的标准部件的基础上,相 ...

  7. hibernate 读取mysql表结构_为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的, 于是我就去搜了一下,就搜到了一篇帖子 ...

  8. Eclipse搭建SSH环境实现Struts2分页显示mysql数据库表中内容

    2019独角兽企业重金招聘Python工程师标准>>> 摘要 学习(Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程),尝试搭建ssh框架 ...

  9. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

    创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...

  10. sql2java-excel(二):基于apache poi实现数据库表的导出的spring web支持

    sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器.这几年一直在根据工作需要维护升级,最近的项目中需要对数据库的记录提供导出excel的功能. ...

最新文章

  1. python数据写入CSV
  2. 轮距和轴距有什么区别_为什么很多国产车都设计得窄高窄高的,是为了节省成本吗?...
  3. 卡巴斯基:今年以来物联网恶意软件数量已超过去年的2倍
  4. Nacos部署中的几个常见问题
  5. Apache下部署Django 的样式问题
  6. Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
  7. 用指针编写程序将输入的字符串倒序输出
  8. 笔记:git常用操作,git使用,git命令行
  9. python数组删除最后一个元素_删除numpy数组中的最后一个元素
  10. python互斥锁_python互斥锁
  11. spring邮件发送(转)
  12. Cmd打开Java软件
  13. 记一次zookeeper连接数暴增事件
  14. AC日记——「SCOI2015」情报传递 LiBreOJ 2011
  15. Android开发人员必看的资料
  16. 《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
  17. linux网络程序编程
  18. J-Octa 使用MD和MO/DFT计算相对介电常数
  19. jieba库词频统计_jieba库的使用与词频统计
  20. 上海悠悠python培训视频教程

热门文章

  1. 启用静态NVI的NAT的配置步骤及示例
  2. OpenCV 常见问题解决方案
  3. 一次性计时器和间隔性计时器的实现
  4. Android开发之传感器(加速度传感器、方向传感器)
  5. 注册中心Eureka的使用
  6. 计算ndvi值需要的数据_利用TM计算NDVI问题
  7. R语言中的Factor到底是什么?
  8. egret eui.Button改变文本、背景色及是否可点击
  9. 小鸟云服务器怎么修改密码?
  10. 2021年安全生产模拟考试(全国特种作业操作证焊工作业-熔化焊接与热切割模拟考试题库一)