一个Orm应该至少提供以下四个主要特性:
1、提供CRUD操作的API。
2、提供一种查询语言,能够直接针对类和属性的查询,比如hibernate提供hql。
3、提供注释元数据。
4、提供事务执行脏数据检查,延迟加载以及其它的优化功能。
在目前所有的Air orm(airdb,airorm,flexorm等)中,目前只有flexorm实现的比较全,基本上1,3,4都实现了,第二个嘛,我看新的版本也模仿hibernate做Criteria的标准化查询。
注意在使用flexorm的项目中,除了将flexorm.swc加在项目的libs中,还要在编译属性的编译参数上加:-keep-as3-metadata+=Table,Id,Column,ManyToOne,OneToMany,ManyToMany,Transient
metadata+=意味着该项目除了使用sdk的metadata外,还增加Table,Id...等元数据。
这些元数据对于我们常用hb的人,应该很熟悉,不一一介绍了。
使用flexOrm参考代码如下:
1、在主应用的script:
protected var entityManager:EntityManager = EntityManager.instance;
protected function application_creationCompleteHandler( event:FlexEvent ):void
{
var dbFile:File = File.applicationStorageDirectory.resolvePath( "main.db" );
var sqlConnection:SQLConnection = new SQLConnection();
sqlConnection.open( dbFile );
entityManager.sqlConnection = sqlConnection;
}
主要是创建EntityManager,这个类是个单例模式,需要赋值sqlConnection。
protected function savePerson():void
{
var person:Person= new Person();
person.firstName = firstNameInput.text;
person.lastName = lastNameInput.text;
entityManager.save(person);
}
package
{
[Bindable]
[Table( name="Person" )]
public class Person
{
[Id]
public var id:int;
[Column( name="first_name" )]
public var firstName:String;
[Column( name="last_name" )]
public var lastName:String;
}
}
文章来源:
来源:http://www.blogjava.net/bjwulin/archive/2010/11/11/337820.html?opt=ad
Air的Orm--FlexOrm