在http://blog.csdn.net/meteorlWJ/archive/2009/09/12/4545858.aspx 中实践了此框架的基础搭建,本次的实践将在此基础上引入hibernate配置,并创建FLEX应用实现数据库操作。
一、环境配置
MyEclipse 7.0
Flex Builder 3.0
Tomcat 6.0
JDK1.6
Flex sdk 3.2
Oracle 10g :XE
二、Hibernate+Proxool配置
Hibernate管理JAVA类到数据库表的映射,并提供数据查询和获取的方法。Hibernate对JDBC进行了轻量级的对象封装,完成了数据持久化的重任。
这是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。Proxool提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。
1)连接池配置:proxool.xml
在JAVA工程src下创建proxool.xml,添加如下配置:
其中参数详解如下:
alias :数据源别名
driver-url :连接字符串
driver-class :驱动类
statistics :连接池使用状态统计
driver-properties :数据库连接用户名/密码
house-keeping-sleep-time :house keeper保留线程处于睡眠状态的最长时间,
house-keeper的职责就是检查各个连接的状态,并判断是否需要销毁或创建
maximum-new-connections :没有空闲连接时可以分配在队列中等待的最大请 求数
maximum-connection-count :最大连接数
minimum-connection-count :最小连接数
trace :每个被执行的SQL语句是执行期是否用被LOG记录
verbose :详细信息设置
2)hibernate配置
在JAVA工程src目录下创建Application-hibernate.xml,添下如下配置
3)配置web.xml
在上一篇中提到web.xml中配置了初始化时加载的文件,在添加了hibernate配置后,同样需要将其添加到web.xml的初始化文件列表中,
修改web.xml中的相关配置:
三、数据库对象映射配置
<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-layout-grid-align:none; punctuation-wrap:simple; text-autospace:none; font-size:10.0pt; font-family:"Book Antiqua"; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman";} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --><!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --><!-- [endif]--> 项目中使用 Hibernate 管理 JAVA 类到数据库表的映射,它可以实现 ORM(Object Relational Mapping) ,将关系数据库中表的数据映射成对象。
1)创建数据库对象
通过以下脚本创建数据库对象
2)创建Who字段映射类
如果你接触过ORACLE数据库,相信对WHO字段应该很熟悉了吧,这里就不多做解释了。本例中将WHO字段的映射独立出来,这样对所有的数据库映射类都能同样使用,而不用重复相同的代码。
在src下创建package com.common.domain,创建BaseWhoEntity.java
3)创建数据库实体类
在创建完数据库表FwkUsers后,我们需要创建与之对应的JAVA实体类,通过Hibernate的annotation实现对象映射
在JAVA工程src下创建package com.admin.domain,创建FrameworkUser.java
4)创建对象扫描类
项目中使用Hibernate映射数据库对象,在做CUDI(Create、Update、Delete、Insert)时希望能够通过对象名自动找到对应的DAO进行事务处理。
在JAVA工程src目录下创建package com.common.util,创建ExtSpringPackageScan.java
四、DAO设计
DAO层的设计采用的是泛型设计。泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
1)DAO接口设计
在JAVA 工程src下创建package com.common.hibernate,创建GenericDao.java
2)DAO接口实现
在JAVA工程com.common.hibernate下创建GenericDaoImpl.java
五、Service设计
通过设计Service层,实现与FLEX之间的数据传递。
1)在JAVA 工程src下创建package com.common.service,创建GenericService.java
2)创建具体应用类BaseService.java
在JAVA工程com.common.service下创建BaseService.java
3)完成DAO与Service层的设计后,需要修改hibernate配置
修改Application-hibernate.xml,添加如下配置:
六、远程服务应用
1)发布BaseService
修改Application-Flex.xml,添加如下配置:
2)FLEX引用BaseService
修改FLEX工程remoting-config.xml,添加如下配置:
3)创建UserModule.mxml
在FLEX工程src/modules下创admin目录,创建UserModule.mxml,通过RemoteObject调用远程服务
4)修改Index.mxml,添加如下内容:
七、编译运行
1)编译FLEX工程
选择Project—>Clean—>TestProject
2)拷贝编译目录bin-debug/modules到JAVA工程WebRoot下
3)启动本地数据库
4)启动Tomcat服务器
5)服务器正常启动后,在浏览器中输入地址(其中9090为服务器端口)
http://localhost:9090/TestProject/modules/common/Index.html
运行结果如下:
首页:
保存数据,检查JAVA与FLEX通信是否正常:
访问数据库,检查数据是否保存成功: