3.3.4 在运行时操作元数据
来源:互联网 发布:中国软件开发公司排名 编辑:程序博客网 时间:2024/06/04 19:25
有些时候,在运行时浏览、操作或者构建映射非常的有用。通过使用操作XML的API,如DOM、dom4j和JDOM能够直接在运行时操作XML文档。所以你可以在生成Configuration对象之前,在运行时创建或者操作XML文档。
然而,Hibernate提供了一个可配置的元数据模型。这个模型包含了所有在你XML文档中声明的信息。你可以通过编程的方式来操作这个模型,这对于那些需要对用户代码进行扩展的应用程序尤其有用。
举例来说,下面的代码为User类增加了一个新的属性motto:
//Get the esisting mapping for User from Configuration
PresistentClass User Mapping = cfg.getClassMapping(User.class);
//Define a new column for the USER table
Column column = new Column();
column.setType(Hibernate.STRING);
column.setName(“MOTTO”);
column.setNullable(false);
column.setUnique(true);
userMapping.getTable().addColumn(column);
//wrap the column in a Value
SimpleValue value=new SimpleValue();
value.setTable(userMapping.getTable());
value.addColumn(column);
value.setType(Hibernate.STRING);
//Define a new property of the User class
Property prop = new Property();
prop.setvalue(value);
prop.setName(“motto”);
userMapping.addProperty(prop);
//Build a new session factory, using the new mapping
SessionFactory sf=cfg.buildSessionFactory();
PersistentClass对象代表了元数据模型中一个持久化类;我们从Configuration取得它。Column,SimpleValue,Property都是Hibernate元数据模型的类,在net.sf.hibernate.mapping包中可以找到这些类。请记住在现存的持久化类中加入一个属性是很容易的,但是为还没有进行映射配置的类创建一个新的映射就有点复杂。
一旦SessionFactory被船舰之后,它的映射就不能再改变了。事实上,SessionFactory使用了一个内部不同的元数据模型而不是配置时的模型。你无法通过SessionFactory或者Session获得原始的Configuration。然而,应用程序可以通过getClassMetadata()或者getCollectionMetadata()方法来读取SessionFactory的元数据模型。举例如下:
Category categor=...;
ClassMetadata meta=sessionFactory.getClassMetadata(Category.class);
String[] metaPropertyNames = meta.getPropertyNames();
Object[] propertyValues = meta.getPropertyValues(category);
代码的快照取得了Category类的持久化属性,并且取得了某个特定对象的属性值。这能够帮助你书写一般性的代码。例如,你可以使用这个特性来为UI模块做标记或者改进日志输出。
现在让我们回到一个特殊的映射元素:标识符属性映射。我们将从对象标识开始讨论。
- 3.3.4 在运行时操作元数据
- 运行时如何使用元数据
- 操作元数据【读取】
- 操作元数据
- SQLServer元数据操作
- pvfs2.8.2元数据操作
- 在实现操作符重载时为何使用友元?
- 此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库
- 在异步运行时,操作不能进行
- Java操作数据库的元数据
- Jacob 操作MSProject - 基本数据元
- JDBC操作元数据示例-- DatabaseMetaData接口
- jdbc-批操作和元数据
- MetaData类获取数据库元数据操作
- JDBC元数据操作-- DatabaseMetaData接口详解
- onethink如何在新增时一条数据的时候运行一个函数或进行某数据库的操作
- 在Flash中嵌入元数据标签
- 在Flash中嵌入元数据标签
- 插入代码
- Oracle数据库监听配置
- 预备提供Java棋类游戏合集包
- VC6向导生成资源管理器界面
- 子网掩码Subnet mask及子网的划分
- 3.3.4 在运行时操作元数据
- oracle 误删除日志文件后的处理方法!
- tcp/ip(三)
- oracle命令 收藏
- SYMBINN
- oracle里的常用命令
- Windows下命令行下启动ORACLE服务
- oracle产生随机数或字符串
- 用 Qt4 Designer 配合程序设计