当前位置:首页>开发>正文

如何让hibernate的xml反向生成表 hibernate注解反向生成表

2023-04-21 12:20:07 互联网 未知 开发

 如何让hibernate的xml反向生成表 hibernate注解反向生成表

如何让hibernate的xml反向生成表

第一步:添加Hibernate jar包,hibernate.cfg.xml写好数据源.

hibernate.cfg.xml:

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">



jdbc:MySQL://localhost/test
com.mysql.jdbc.Driver
root
root
org.hibernate.dialect.MySQLDialect
true





第二步:编写实体类

package com.bc.bean

import java.util.Date

public class Business {
private Integer uId
private String uName
private Date hirDate
private int zStoreNum
private int zBranchNum
private int zTradNum
private int sStoreNum
private int sBranchNum
private int sTradNum
private int bStoreNum
private int bBranchNum
private int bTradNum
private int totalNum
private String home
public Business() {
super()
}
public Integer getuId() {
return uId
}
public void setuId(Integer uId) {
this.uId = uId
}
public String getuName() {
return uName
}
public void setuName(String uName) {
this.uName = uName
}
public Date getHirDate() {
return hirDate
}
public void setHirDate(Date hirDate) {
this.hirDate = hirDate
}
public int getzStoreNum() {
return zStoreNum
}
public void setzStoreNum(int zStoreNum) {
this.zStoreNum = zStoreNum
}
public int getzBranchNum() {
return zBranchNum
}
public void setzBranchNum(int zBranchNum) {
this.zBranchNum = zBranchNum
}
public int getzTradNum() {
return zTradNum
}
public void setzTradNum(int zTradNum) {
this.zTradNum = zTradNum
}
public int getsStoreNum() {
return sStoreNum
}
public void setsStoreNum(int sStoreNum) {
this.sStoreNum = sStoreNum
}
public int getsBranchNum() {
return sBranchNum
}
public void setsBranchNum(int sBranchNum) {
this.sBranchNum = sBranchNum
}
public int getsTradNum() {
return sTradNum
}
public void setsTradNum(int sTradNum) {
this.sTradNum = sTradNum
}
public int getbStoreNum() {
return bStoreNum
}
public void setbStoreNum(int bStoreNum) {
this.bStoreNum = bStoreNum
}
public int getbBranchNum() {
return bBranchNum
}
public void setbBranchNum(int bBranchNum) {
this.bBranchNum = bBranchNum
}
public int getbTradNum() {
return bTradNum
}
public void setbTradNum(int bTradNum) {
this.bTradNum = bTradNum
}
public int getTotalNum() {
return totalNum
}
public void setTotalNum(int totalNum) {
this.totalNum = totalNum
}
public String getHome() {
return home
}
public void setHome(String home) {
this.home = home
}

}

第三步:编写实体类映射文件

HomeBusiness.hbm.xml


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">



















第四步:Main执行创建

ExportDB.java

package com.test.bean.test

import org.hibernate.cfg.Configuration
import org.hibernate.tool.hbm2ddl.SchemaExport

public class ExportDB {

public static void main(String[] args) {
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure()
SchemaExport export = new SchemaExport(cfg)
export.create(true, true)
}
}

按照以上步骤,即可反向生成!

hibernate注解反向生成表

Configuration config = new AnnotationConfiguration().configure()
SchemaExport schemaExport = new SchemaExport(config)
schemaExport.create(true, true)

如何在eclipse中使用hibernate插件反向生成实体类

1,下载hibernate的插件,打开Eclipse,help>install new software菜单里面,name随便,url是:http://download.jboss.org/jbosside/updates/stable,选择什么jboss 带有data 。。。 的目录,下面有hibernate tool。安装。

2,在Eclipse中添加数据库信息:

打开Data Source Explorer,如下图:

选择new。。。,

选择相应的数据库产品,next,

Drivers那一项要点后面的按钮驱动jar的位置,填写数据库信息,finish。

出现上面的信息,证明eclipse连接数据库成功。
3,添加hibernate配置:
打开window>show view>other,选择hibernate菜单下的hibernate config,如下图,

然后在console选项卡里出现了hibernate configuration选项卡,如下图:

如果从未配置过hibernate,那么这里就是空,空白处右击,选择add一个即可,如果配置过了,就会显示配置文件。下面看下如何add一个新的配置。右击空白处,如下图:

选择add之后,出现如下图的界面:

上面是Main选项卡的配置,重点是Database connection的配置,用的就是之前第2步配置的数据源。如果想要hibernate的配置文件,可以在Configuration file选项里,让eclipse生成新的配置文件,不生成也可以。
然后再如下图所示,配置Option选项卡的dialect,

最后点击OK,即可,就会生成一条新的hibernate config。
4,在工具栏添加hibernate相关的按钮:

进入后:

勾选hibernate code generate,点击OK,会多了一个下图中的按钮:

5,配置hibernate code generation:
选择上图中的Hibernate Code。。。选项,

只能上述方式填写,main选项卡,console configuration就是之前配置的hibernte config,reveng.xml的话得setup,create new,如下图:

要选择xml文件的存放位置,之后点击next,而不是finish,会按照之前的hibernate config来找数据源,出现下图:

一开始左侧列表为空,需要点击refresh,然后选择数据库,选择表,include就可以了,这就是要生成的数据库表的实体类和配置文件。finish。

再配置,exporters选项卡:

勾选生成哪些文件。
最后配置common选项卡,字符集:

点击run,出现了生成的文件:


要说明的一点是,如果要反向生成关联,比如one-to-many这些,那么底层的数据库建表的时候就得添加foregn key约束,否则生成的配置文件不会有关联的信息,只是分离的一张张表。

用hibernate生成反向工程时数据可以表中有外键字段就不能生成,怎么解决?

不是不生成,而是生成了关联的对象了吧,这是对的。
比如:学生 和 班级 这两个表,学生表有一个“班级_id"字段作为外键,关联到班级表的id主键上。
表示多个学生对应一个班级的”多对一“关联关系:

学生表(id, name, 班级_id)
班级表(id, name)

Hibernate反向工程生成的类里面,属性就应该类似下面:

学生( id, name, 班级)
班级(id, name)

其中原来学生表里面的”班级_id"字段,经过Hibernate反向工程,变成了学生类的班级属性,就表示这个学生属于哪个班级,很自然的啊,只不过不是生成“班级_id"这样的属性。

hibernate利用实体类生成数据库表

hibernate的生成主键策略有好几种,有数据库管理主键,有应用程序管理主键,sqlserver数据库的主机那ID可以自动生成,oracle不能自动生成。
java 类中
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)//主键自增,注意,这种方式依赖于具体的数据库,如果数据库不支持自增主键,那么这个类型是没法用的;strategy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCE 和 TABLE 4种,分别表示让ORM框架自动选择, 根据数据库的Identity字段生成,根据数据库表的Sequence字段生成,以有根据一个额外的表生成主键,默认为AUTO 。
看看能不能帮助你啊!

Hibernate反向建表于自己手动建表各有什么优缺点

一般来说,一个项目的业务流程,都会反映在数据库当中,通常在进行项目开发时,都会先设计数据库,然后使用hibernate生成实体类,好处是业务清晰,表与表之间的关联比较容易看出。反向建表个人没有实际用过

最新文章