用自定义元数据注解ActionScript类+加AIR简单的ORM框架

原文出自:http://coenraets.org/blog/2007/10/annotating-actionscript-classes-with-custom-metadata-simple-orm-framework-for-air/

PS:英文很差,翻意得很不好,请见谅

flex3.0有一个比较少人知道的新功能,用自定义的元数据注解ActionScript类。你能用如下的例子一样注解你的类

package

{

	[Bindable]

	[Table(name="contact")]

	public class Contact

	{

		[Id]

		[Column(name="contact_id")]

		public var contactId:int;



		[Column(name="first_name")]

		public var firstName:String;



		[Column(name="last_name")]

		public var lastName:String;

		public var address:String;

		public var city:String;

		public var state:String;

		public var zip:String;

		public var phone:String;

		public var email:String;

	}

}


  在这个例子中,[Bindable]是ActionScript标准的 metadata annotation,而Table, Id 和Column则是用户自定义的。编译器的-keep-as3-metadata参数允许你在编译后保留自定义的metadata annotation(PS:很莫名的实现方式,不知道以后会不会有变动),有相关的API操作它( describeType)

      现在,我们来设置编译器的参数,在FlexBuilder中右键点击AIR的项目,选择菜单中的"Properties"项,然后再选择"Flex Compiler"项。在这个例子中,我们在"Additional compiler arguments"加入参数-keep-as3-metadata+=Table,Id,Column(PS:附件中有截图)。这样,我们就可以使用自定义的annotation了。

      自定义的metadata annotation能用他来做各种各样有趣的事。为此,今年我用自定义的 metadata annotation为AIR写了一个简单的数据库持久化框架。




      使用这个框架,你可以在实体类中像hiberante annotation一样,用metadata annotation标记实体对应的table的名称,及对应的ID和字段名。我们可以用这个框架,把实体对像中的数据持久化到Air内置的 SQLite database数据库中,而不用写SQL语句。如果没有数据库,或表框架自为你建库和表。

     以下例子中将新增一contact到你的数据库中

var contact:Contact = new Contact();

contact.firstName = "Christophe";

contact.lastName = "Coenraets";

contact.email = "ccoenrae@adob.com";

entityManager.save(contact);


    修改的例子如下

contact.firstName = “Chris”;

entityManager.save(contact);


    删除的例子如下

entityManager.remove(contact);


   通过你的metadata annotation注释,框架可以entityManger实例会自动生成SQL语句,来进行数据库操作。

   注意:这个是一个简单的框架的,他不是一个完备的ORM解决方案。为了简单化,他使用了一些假设,比如,所有的主键都被假设为自增变量的整型

   你可以在附件中下载程序,在flexBuilder中建立一个air项目,引入这些文件,用上面的方法去设置编译器,就可以使用他了。

   PS:我没有通测试通过这个例子,不过我看了他的代码,这是个可行的方案,为此我做过了这篇文章中最重要的Aonnotation的例子,证实这是可用的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值