基于eclipse和hiber的pojo、数据库表与mapping的相互转换(二)
思路二:由数据库表,生成Mapping映射文件和POJO类。
虽然可以实现,但个人觉着先设计数据库,然后再生成类不符合Hibernate的面对对象持久化的思维方式。好了,还是说步骤吧,首先在test数据库建立两张表,分别为course表和teacher表
![](https://code.csdn.net/assets/CODE_ico.png)
- -- ----------------------------
- -- Table structure for course
- -- ----------------------------
- DROP TABLE IF EXISTS `course`;
- CREATE TABLE `course` (
- `id` int(11) NOT NULL,
- `name` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- -- ----------------------------
- -- Table structure for teacher
- -- ----------------------------
- DROP TABLE IF EXISTS `teacher`;
- CREATE TABLE `teacher` (
- `id` int(11) NOT NULL,
- `name` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`id`)
- ) 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映射文件的代码
![](https://code.csdn.net/assets/CODE_ico.png)
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <!-- Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0 -->
- <hibernate-mapping>
- <class name="org.hibernate.test.Course" table="course" catalog="test">
- <id name="id" type="int">
- <column name="id" />
- <generator class="assigned" />
- </id>
- <many-to-one name="teacher" class="org.hibernate.test.Teacher" fetch="select">
- <column name="teacherId" not-null="true" />
- </many-to-one>
- <property name="name" type="string">
- <column name="name" />
- </property>
- </class>
- </hibernate-mapping>
![](https://code.csdn.net/assets/CODE_ico.png)
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <!-- Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0 -->
- <hibernate-mapping>
- <class name="org.hibernate.test.Teacher" table="teacher" catalog="test">
- <id name="id" type="int">
- <column name="id" />
- <generator class="assigned" />
- </id>
- <property name="name" type="string">
- <column name="name" />
- </property>
- <set name="courses" table="course" inverse="true" lazy="true" fetch="select">
- <key>
- <column name="teacherId" not-null="true" />
- </key>
- <one-to-many class="org.hibernate.test.Course" />
- </set>
- </class>
- </hibernate-mapping>
生成的POJO类:
![](https://code.csdn.net/assets/CODE_ico.png)
- package org.hibernate.test;
- // Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0
- /**
- * Course generated by hbm2java
- */
- public class Course implements java.io.Serializable {
- private int id;
- private Teacher teacher;
- private String name;
- public Course() {
- }
- public Course(int id, Teacher teacher) {
- this.id = id;
- this.teacher = teacher;
- }
- public Course(int id, Teacher teacher, String name) {
- this.id = id;
- this.teacher = teacher;
- this.name = name;
- }
- public int getId() {
- return this.id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public Teacher getTeacher() {
- return this.teacher;
- }
- public void setTeacher(Teacher teacher) {
- this.teacher = teacher;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
![](https://code.csdn.net/assets/CODE_ico.png)
- package org.hibernate.test;
- // Generated 2014-5-31 11:19:19 by Hibernate Tools 4.0.0
- import java.util.HashSet;
- import java.util.Set;
- /**
- * Teacher generated by hbm2java
- */
- public class Teacher implements java.io.Serializable {
- private int id;
- private String name;
- private Set courses = new HashSet(0);
- public Teacher() {
- }
- public Teacher(int id) {
- this.id = id;
- }
- public Teacher(int id, String name, Set courses) {
- this.id = id;
- this.name = name;
- this.courses = courses;
- }
- public int getId() {
- return this.id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Set getCourses() {
- return this.courses;
- }
- public void setCourses(Set courses) {
- this.courses = courses;
- }
- }
到此我们就完成了由数据库表生成POJO类和Mapping映射文件的过程
思路三:由Mapping映射文件生成数据库DDL和POJO类
首先,新建一个Mapping文件,这里在项目中建立Department.hbm.xml。
![](https://code.csdn.net/assets/CODE_ico.png)
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
- <hibernate-mapping>
- <class name="org.hibernate.test.Department" table="DEPARTMENT">
- <id name="id" type="int">
- <column name="ID" />
- <generator class="increment"></generator>
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" />
- </property>
- </class>
- </hibernate-mapping>
接下来建一个新的Console Configuration文件,基本配置和上文中配置的过程一样,最关键的是加入mapping文件。
接下来,改下Hibernate Code Generation Configuration就好了,首选选择新配置的Console Configuration文件
接下来选择要生成的Schema和.Java文件,然后run就可以了。
最终结果如图:
生成的DDL代码为
![](https://code.csdn.net/assets/CODE_ico.png)
- create table DEPARTMENT (ID integer not null, NAME varchar(255), primary key (ID));</span>
POJO类:
![](https://code.csdn.net/assets/CODE_ico.png)
- package org.hibernate.test;
- // Generated 2014-5-31 16:23:27 by Hibernate Tools 4.0.0
- /**
- * Department generated by hbm2java
- */
- public class Department implements java.io.Serializable {
- private int id;
- private String name;
- public Department() {
- }
- public Department(String name) {
- this.name = name;
- }
- public int getId() {
- return this.id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
好了,至此POJO类,Mapping文件和数据库表相互转化就都介绍完了,当然这是借助eclipse的插件实现的,熟悉使用ant的朋友也可以借助ant脚本来实现,具体的教程去google吧。这里推荐下HibernateTools的官方教程,包含了eclipse插件和ant脚本两种实现方式,非常全面。
基于eclipse和hiber的pojo、数据库表与mapping的相互转换(二)相关推荐
- 【精品】电商项目 中 基于SPU与SKU的 商品 数据库表设计
简介 一般情况下我们使用5张表就可以解决基本的需求了: 商品分类表:category 商品表(即SPU表):表:product 商品规格表(即sku表):product_specs 属性key表:at ...
- 基于eclipse的android项目实战—博学谷(新功能二)欢迎界面倒计时
在前面博学谷项目的基础上进行改善和增加新功能 源码资源下载:https://download.csdn.net/download/hyh17808770899/19844673 博学谷的第二个新功能: ...
- 基于Eclipse+Java+Swing+Mysql图书信息管理系统
基于Eclipse+Java+Swing+Mysql图书信息管理系统 一.系统介绍 二.功能展示 1.主页 2.新增图书信息 3.删除图书信息 三.数据库 四.其他系统实现 五.获取源码 一.系统介绍 ...
- 基于Eclipse+Java+Swing+Mysql实现酒店管理系统
基于Eclipse+Java+Swing+Mysql实现酒店管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.首页 3.开房 4.退房 5.房间信息 6.顾客信息 三.数据库 四.其它 1.其他 ...
- 基于eclipse的android项目实战—博学谷(二十三)其他功能
本项目是用eclipse软件编写,经过我的亲自实践,其真实有效,希望能给您有所帮助 项目版本:android5.1.1 ADT版本:23.0.6 SDK版本:24.4.1 运行模拟器:夜神模拟器 若有 ...
- 第十三章 Delphi开发数据库应用程序概述(二)
数据控制部件页上的部件,主要用于设计用户界面,对数据库中的数据进行浏览.编辑.插入.删除等操作.因而数据控制部件常常又被称为数据浏览部件,数据控制部件其实是在Standard页上的标准部件的基础上,相 ...
- hibernate 读取mysql表结构_为什么要用hibernate 与基于数据库表结构的项目开发
最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的, 于是我就去搜了一下,就搜到了一篇帖子 ...
- Eclipse搭建SSH环境实现Struts2分页显示mysql数据库表中内容
2019独角兽企业重金招聘Python工程师标准>>> 摘要 学习(Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程),尝试搭建ssh框架 ...
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...
- sql2java-excel(二):基于apache poi实现数据库表的导出的spring web支持
sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器.这几年一直在根据工作需要维护升级,最近的项目中需要对数据库的记录提供导出excel的功能. ...
最新文章
- python数据写入CSV
- 轮距和轴距有什么区别_为什么很多国产车都设计得窄高窄高的,是为了节省成本吗?...
- 卡巴斯基:今年以来物联网恶意软件数量已超过去年的2倍
- Nacos部署中的几个常见问题
- Apache下部署Django 的样式问题
- Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
- 用指针编写程序将输入的字符串倒序输出
- 笔记:git常用操作,git使用,git命令行
- python数组删除最后一个元素_删除numpy数组中的最后一个元素
- python互斥锁_python互斥锁
- spring邮件发送(转)
- Cmd打开Java软件
- 记一次zookeeper连接数暴增事件
- AC日记——「SCOI2015」情报传递 LiBreOJ 2011
- Android开发人员必看的资料
- 《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
- linux网络程序编程
- J-Octa 使用MD和MO/DFT计算相对介电常数
- jieba库词频统计_jieba库的使用与词频统计
- 上海悠悠python培训视频教程