日期:2014-05-17  浏览次数:20840 次

hibernate正转(根据POJO生成xml)
    一般用hibernate都是用它的反转功能,就是根据数据表,生成xml,然后再生成pojo的实体,但是我需要反过来搞,要据pojo的实体生成xml.进而生成数据表,能不能这样做,怎样做,有知道的高手给解答下,万分感激
------最佳解决方案--------------------
哥  你 另外一个帖子 不是 给你答案了吗!看最后的我的 回答,不需要XML文件 直接注解。就可以自动创建表了。

你如果一定要根据pojo 声成xml 文件
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;


public class kkkk {
private String ma;
private String userpassword;
public String getMa() {
return ma;
}
public void setMa(String ma) {
this.ma = ma;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}
public static void main(String[] args) throws Exception {
StringBuilder builder=new StringBuilder();
StringBuilder builderxml   = new StringBuilder();
builder.append("create table user (");
builderxml.append("<? xml version = '1.0' encode='UTF-8'>");
for(Field a :kkkk.class.getDeclaredFields()){
if(a.getName().equals("ma")){
builder.append(" username varchar(10) , ");
builderxml.append("some  username xml file \n");// please asseme xml by yourself 
}
if(a.getName().equals("userpassword")){
builder.append(" userpassword varchar(20) ");
builderxml.append("some  userpassword xml file");// please asseme xml by yourself 
}
}
builder.append(")");
System.out.println(builder.toString());// create   table  sql by pojo 
File  hbmfile   =  new File("/user.hbm.xml");
FileWriter fileWriter   = new FileWriter(hbmfile); // create hbm.xml  file by  pojo 
System.out.println(hbmfile.getAbsolutePath());
byte[] a  = builderxml.toString().getBytes();
fileWriter.write(builderxml.toString(), 0, builderxml.toString().length());
fileWriter.flush();
fileWriter.close();
}



}

自己 看看了 
------其他解决方案--------------------
我只知道可以根据POJO类和对应的xml映射文件可以生成数据库中的表。
------其他解决方案--------------------
不能根据pojo类生成xml映射文件,然后再生成表吗?
------其他解决方案--------------------
还有 一点 非常不理解 你为什么要这么做,在正常的项目中,都是先设计好业务逻辑关系,即数据库表,然后再开始编写代码,一般情况 不允许根据POJO逆向生成,会造成业务关系紊乱,及后期维护困难。如果后期需要加表,说明前期数据库表逻辑关系没有设计好!!!楼主应该是初学者(我也是了)
------其他解决方案--------------------
嘿嘿,没别的就是想试试。不考虑业务逻辑,纯粹从这个想法出发。