在做EAM平台时,通过数据库操作,进行的又一次的抽象,设计一个数据容器模块,可以在平台完成数据表的增删改操作。发现传统的Hiberante的映射class,无法完成数据结构的局部修改和表的动态建立,需要增加或修改java类。
但是Hiberante本身是支持动态数据模型的,它允许entity映射为功能强大的Map集合类。同时我们遗弃的POJO的好处,POJO为程序操纵带来了很多便利,对象隐蔽了大量的动态过程。
使用Map为映射类时,在hbm定义文件中,在class中不用指定name属性、而是将name变为entity-name属性等于数据表的名字,映射文件就改好了。然后再将Session中的EntityMode属性设为MAP映射(session.getSession(EntityMode.MAP))。当数据结构(添加表或修改表字段等)发生变化时,我们只需修改或添加hbm文件映射模型就可以了,而不需要添加或修改java实体类了。这样我们就能使用Map存储,查询数据了。
查询代码操作:
//hql语句
String hql = "from 表名";
//查询数据表
List list = session.queryList(hql);
//遍历数据
for(int i=0;i<list.size();i++){
Map map = (Map)list.get(i);
Set l = map.keySet();
Iterator ii = l.iterator();
while(ii.hasNext()){
String key = (String)ii.next();
System.out.print(key+"--==--"+map.get(key));
}
}
Hiberante的映射方式有三种:MAP、POJO、DOM4J。我们最常用的也就是POJO了。
但是Hiberante本身是支持动态数据模型的,它允许entity映射为功能强大的Map集合类。同时我们遗弃的POJO的好处,POJO为程序操纵带来了很多便利,对象隐蔽了大量的动态过程。
使用Map为映射类时,在hbm定义文件中,在class中不用指定name属性、而是将name变为entity-name属性等于数据表的名字,映射文件就改好了。然后再将Session中的EntityMode属性设为MAP映射(session.getSession(EntityMode.MAP))。当数据结构(添加表或修改表字段等)发生变化时,我们只需修改或添加hbm文件映射模型就可以了,而不需要添加或修改java实体类了。这样我们就能使用Map存储,查询数据了。
查询代码操作:
//hql语句
String hql = "from 表名";
//查询数据表
List list = session.queryList(hql);
//遍历数据
for(int i=0;i<list.size();i++){
Map map = (Map)list.get(i);
Set l = map.keySet();
Iterator ii = l.iterator();
while(ii.hasNext()){
String key = (String)ii.next();
System.out.print(key+"--==--"+map.get(key));
}
}
Hiberante的映射方式有三种:MAP、POJO、DOM4J。我们最常用的也就是POJO了。