基于Athena框架的Flex入门教程(2)配置Entity, 自动生成Java端, Flex端代码

Categories: FlexJava; Tagged with: ; @ April 23rd, 2011 15:50

使用Athena Console(控制台)管理数据库, 管理Entity, 生成代码

基于Athena Console可快速创建并管理数据库, 维护数据库结构, 并自动生成代码.

使用Athena Console创建并管理数据库

控制台基于前文所述的eo-config.xml文件运行, 因此启动后应选择配置文件

image_thumb[4]

由于数据库并不存在, 因此”Check database”时会提示未知数据库, 此时可点击”Create database”自动创建数据库:
“Creating database: helloWorld …
Database created successfully.”

helloWorld数据库被创建, 但没有任何table. 点击”Initialize database”, 会自动创建框架用于存储数据库结构的内置Table:

image_thumb[6]

这些Table用于存储MetaData, 如: Entity存储Table信息, attribute存储Table中字段信息, relationship存储entity关系信息(如department.employees)

此时数据库已初始化完毕, 点击控制台上方按钮进行建模:

数据建模 Entity Modeling

点击Launch metadata workbench后会自动启动浏览器, 打开基于Flex创建的Metadata管理器. 通过该管理器可快速创建Entity, 配置Entity的Attribute及RelationShip.

基于Metadata workbench可直接将程序员从数据库处理中解脱处理, 所有操作均在workbench中操作即可达成Table创建, 字段维护等操作.

我们会创建一个Department的Table(Entity), 其中包含有deptName 字段(Attribute)

创建Entity:image_thumb[15]

System name将作为Entity生成代码后的Class名称;
Table name指Table名称(该Table会自动创建, 无需手动操作)
Package name配置了代码生成时的Package路径;
Display name为默认的显示名称; i18n name可自动进行i18n国际化.

为Department增加Attribue:

image_thumb[12]

值得一提的是:

System name会作为Java及Flex两端代码的属性名称; 在命名时会禁止使用各数据库的保留字段;
Column type内置几乎所有的类型, 可根据具体数据库自动创建字段;

配置完毕后保存Entity, 返回控制台程序.

生成代码

控制台会根据eo-config.xml配置的代码生成路径, 自动生成Java ActionScript代码:

image_thumb[17]

代码生成完毕, 刷新Java与Flex工程, 可以看到代码已生成:

image_thumb[19]

image_thumb[21]

每个Entity会为每种语言自动生成两个Class, 如: Department_EO, Department;

Department_EO:  当metadata有变化, 再次生成代码时, 将会覆盖本类, 因此不建议对本类进行任何手工改动;
Department: 该类继承自: Department_EO仅当第一次生成代码时产生该类, 以后再次生成将不会进行任何覆盖操作; 因此可对重写父类Method或增加其他Method;

基于Athena框架的Flex入门教程(1) 环境配置

Categories: FlexJava; Tagged with: ; @ April 23rd, 2011 15:44

环境搭建

在服务器端, 我们采用MySql数据库;

除了开发必须的IDE, MySql之外, 需要先下载或安装以下文件: 下载页面

  • Athena Framework SDK (Java and Flex) 2.0.0 – 包含Java端及Flex端的SDK及文档
  • Athena Console 2.0.0 – 控制台程序, 用于配置Java端数据库及管理Metadata.

image

docs: 存放文档, 与Flex文档类似, 有HTML及PDF;
lib: 存放程序运行依赖的jar, 如mysql-connector, BlazeDS等jar包;
src: 目录存放程序源代码

athena打头的jar供Java端使用;
athena打头的swc供Flex端使用; sdk的具体使用在后文有介绍;

 

服务器端配置

创建Java Project

  1. File -> New -> Dynamic Web Project
  2. 复制所有jar到PROJECT_ROOT/WebContent/WEB-INF/lib
  3. 配置web.xml, 用以启动Athena及BlazeDS服务;
  4. 创建两个配置文件: eo-config.xml 与 flex-services.config.xml;
    eo-config.xml中配置了数据库类型, 数据库连接信息, 以及代码存放位置(供Athena控制台工具使用), 该xml中java-source-local-dir属性为Java src的根目录, flex-source-local-dir为Flex src的根目录(待Flex工程创建完毕后配置);
    flex-services.config.xml为MessageBrokerServlet(BlazeDS)的配置文件;

配置可参见http://athenasource.org/flex/basic-tutorial.php?part=1

至此, 服务器端已基本配置完毕;

Flex端配置

使用FlashBuilder创建工程:

注意: server type选择None/Other, 我们使用编程方式链接服务器;

复制src目录地址, 配置到flex-services.config.xml中, 为下一步的代码生成做好准备;

Flex 开源框架Athena —- Remote Object 管理利器

Categories: Flex; Tagged with: ; @ April 23rd, 2011 11:16

雅典娜框架是一个针对Flex企业级应用开发的对象关系映射(ORM)框架,  适用于Java作为服务器端的应用. 服务器端使用MetaData配置数据结构, 极大简化了Flex/Flash RIA 应用程序开发流程.

image

Demo演示http://athenasource.org/flex/videoguide/TutorialFlexEmpDir.htm

服务器端(Java)

Athena框架在Java端完美的支持MySql, DB2, Derby等数据库, 使用Athena提供的管理工具, 可通过配置Metadata直接管理数据库结构 — 无需繁琐的配置XML, 无需直接管理数据库.
同时可自动生成Java代码及ActionScript代码, 功能相当拉风.

除此之外, 对数据的持久化操作, 强大的EJBQL, 全面的代码生成, Partial Object, 还有Multi-tenancy, 最大限度的提升开发效率.

更多功能可参见其功能列表

Flex端

可以像使用Hibernate/JPA一样, 在Flex端管理数据.  基于Athena框架, 开发者可在Java与Flex端使用相同的对象模型.  Athena控制台可同时生成Java与Flex Class代码, 并且保持同步.

与Java端类似, Flex端也采用了Uow (UnitOfWork)管理对象, Uow可保证Object的唯一性, 同时也有Partial Object支持, 可从服务器端加载Object的部分Attribute, 最大限度的提高应用效能.

另一个亮点功能就是RelationShip的自动加载, 如dept.employees, Athena会自动解析关系的目标对象~

更多功能可参见Flex端功能列表

jQuery — Ajax Post数据乱码

Categories: JavaScript; Tagged with: ; @ April 20th, 2011 17:47

jQuery.ajax() API:

“POST data will always be transmitted to the server using UTF-8 charset, per the W3C XMLHTTPRequest standard.”  http://api.jquery.com/jQuery.ajax/

使用IE时, 出现乱码… 后台是java, tomcat的server.xml也已配置编码(见:RiaShanghai)….
突然发现用Firefox就木有问题.

“因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(IE默认使用iso-8859-1编码)”http://fatkun.com/2010/12/jquery-ajax.html

呃, 应该就是这么个问题了.

解决方法:

$.ajaxSetup({ contentType: "application/x-www-form-urlencoded; charset=utf-8" });

Flex 自定义Event 低级错误一例: 未重写Clone方法, 导致类型转换失败

Categories: Flex; Tagged with: ; @ December 10th, 2010 13:59

在Event监听并转发过程中, 因为没用重写Clone方法, 导致实例被Clone为普通Event实例.

情况是这样的:
自定义Event: EventTest: 继承Event, 增加了一些属性, 重写了toString(), 未重写Clone.

出现问题: 创建EventTest实例后, 多次监听并转发, 在监听, 转发过程中, Event实例对象被Clone, 因为未重写Clone方法, 会通过Event类的Clone方法进行复制, 仅会复制其EventType, 且类型为Event.

形象的说就是: eventTest –> 被监听到, 准发 ->框架Clone eventTest(EventTest类中未重写Clone方法, 于是eventTest被克隆为一个普通Event) –> 再次监听, Event类型不吻合, 报错.

公司代码规范中严格规定了自定义Event必须及时重写Clone与toString方法, 写了这么久, 我才领悟到原因. 败了

Newer Posts <-> Older Posts



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.