日期:2014-05-16  浏览次数:20396 次

数据库修改后Hibernate的配置更新

/******************************************************************************

Author: QinZhiGuo

 

Date:   2012-6-26

 

Topic:  关于数据库端表更新本地hibenate相关配置调整的解决方案

 

******************************************************************************/

Content:

后台组在开发过程中可能会遇到这样的如下问题:

1.      根据手机端需求变化,需要修改后台的数据库设计

2.      数据库设计存在一定的问题,某些数据库表需要删除若干列

3.      新建了数据库表

4.      在原有表中新添加了列

 

这一系列问题我们可能会经常性的遇到,之前为了解决后台编码和开发的问题,我们选择重新反向生成所有的表,来达到重建的目的。但是这样一来存在很大的问题,就是我们需要重复性的去完成很多工作。之前一直苦于这样的无用功。

现在我们可以尝试一下另外的解决方案:

Q1:新建了表怎么办呢?

 

A1:新建表后,我们解决起来比较简单,直接添加相关配置,但是可能需要修改几个文件,首先切换到”MyEclipse Database Explorer Perspective”视图模式,具体的切换方法可以在:

Window->ShowView->DB Browser

然后选择对应的数据连接,然后在ECAMPUS->TABLE下可以看到我们用户可以访问的数据库表,选择要添加的表,然后右键->反向生成。然后一步步添加entity和DAO即可。

 

 

反向生成完毕后我们需要回到MyEclipse的编辑模式,然后需要配置hibernate.cfg.xml文件,然后再mapping里面添加我们刚刚加入的表映射配置文件,比如我们刚刚反向添加了WApp整个表,在com.edance.ecampus.web.entity里面会有一个com.edance.ecampus.web.entity.Wapp.hbm.xml,我们需要将这个配置问价加入即可。

Q2:表中添加了新的列怎么办?

A2:

解决方法一(推荐)

把原有表的配置文件包括如下

com.edance.ecampus.web.entity.XXX.hbm.xml,

com.edance.ecampus.web.entity.XXX.java

com.edance.ecampus.web.dao.XXXDAO.java

依次删除。

然后重新反向添加,添加方法如A1

 

解决方法二:

数据库中原有表中添加新列后我们并不需要刻意的重新生成,在研究了hibernate的配置相关性后,我们需要改动几个地方来解决这个问题:

首先我们需要在对应的com.edance.ecampus.web.entity.XXX.hbm.xml中添加对应的一个<property>XXXX</property>项,这样配置文件才能访问到对应的列。

然后在com.edance.ecampus.web.entity.XXX.java中添加对应的set和get方法。然后保存。

 

然后需要在XXXDAO.java中添加和修改对应的方法。一般配置完成后myeclipse会自动更新。

 

 

Q3:表中删除了原有若干的列怎么办?

A3: 修改方法同Q2,改动的地方相同,只是变成了删除。

 

 

-----------------------------------------à我是华丽的分割线<------------------------------------------------

 

如果在上述情况修改完还是不好使的话,可以尝试重新生成,最笨的办法了。祝大家好运!