首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>Java基础>正文

只支持单表映射的持久化框架──EasyDBO

http://www.oklinux.cn  2008-02-20  赛迪网 林楠  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

EasyDBO是一个超轻量级的目前只支持单表映射的持久化框架,超轻量意味着入手很简单,使用很方便,但注意它是单表映射,导致在处理一些映射关系的时候要做一些特别的处理。

使用EasyDBO的持久化策略:

一对一

一对一关系要分为两种情况,一是主表对从表的映射。如Name(firstName, lastName, midNmae) 表和User表,因为EasyDBO只支持单表的映射,如果表的粒度过细,会导致极细的领域对象的产生,如Name对象的产生,而又需要为这些细粒度的对象创建CRUD方法,而且EasyDBO没有象Hibernate那样的自动的关联持久化操作,而且如果不使用Easyjf-dbo.xml来配置的话(即直接使用类实现IObject接口的话),你甚至不能在User对象中出现Name对象的私有成员申明。所以在这种情况下,最好把Name表和User表融合。二是大表和大表的映射,在这种情况下就只有使用外键关联的策略。但同样要注意,EasyDBO现在还不是一个完善的持久化框架,我认为很重要的一点就是离开了easyjf-dbo.xml的配置来持久化对象,如果直接使用implements IObject(而这是我认为最方便简单的使用途径,想必用惯了Hibernate转而使用EasyDBO的人都用这种感觉吧)你不能完整的使用OO,即不能在BBSDoc中出现private BBSDir bbsdir;而只能使用private String bbsdir_id。

一对多

一对多(多对一)通过上面的分析,可只在这种情况下,最好还是使用外键的关联(多的一方主动关联一的一方)。那么在领域类为一的一方中,不能出现XXXSet之类(如果使用配置文件除外)。这样实现的就是单向关联。要使用双向关联的话,就只能为一的一方添加一个Util类,使用Query方法来得到多的一方的List了。

多对多

多对多的情况是比较复杂的了。一般的情况是通过建立一个中间表来管理两对象的关系。在EasyDBO中就分两个情况了。先举个例子:比如User和Role,这是一个典型的多对多的映射关系,在用户权限管理模型中这种实现方法很普通。那么对这个多对多该怎么处理?首先还是要建立一个User-Role表,这个是必须的,其次就出现了两个情况,一,直接使用User-Role表。这种情况就是说不对User-Role表做任何处理,在UserUtil中建立一个List getRoles()方法,在该方法中直接使用SQL语句从做一个两层的嵌套查询。这种方法还是不错,对于原来就使用JDBC的程序员很熟悉,但比较麻烦而且查找次数较多。另一个就是为User-Role表建立一个UserRole对象,这也是我推荐的做法。建立一个对象的意思不是说就是一个单纯的建立一个桥梁对象(我自己就这样叫那种为只起中间过度作用的表建立的对象),我就想能不能根据实际的情况利用好这个对象。比如在用户权限管理界面中我们会列出某个用户的所有权限或者列出属于一个权限组的所有用户只类的,那么我门就可以在User-Role表(即UserRole对象中)添加一些冗余字段,如userName, roleNmae等等来方便页面的合成操作,比如我门可以方便的使用# foreach ( $UserRole in $UserRoleList)… $!UserRole.userName等等来简化页面的编写,而且这样操作,查询数据库的次数会少很多,而如果使用第一中就比较麻烦了。但要注意的是不能过多的添加字段,毕竟这些是冗余的数据。


上一篇:Linux系统下搭建SNORT入侵检测系统   下一篇:提高J2EE层与数据库层交互操作能力的优势

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·详细讲解J2ME中用不到的Java基础知识
·实例讲解实例讲解JSP调用SQL Server的存储过程
·深入讲解提升JSP应用程序的七个实用方法
·实例讲解如何读取和处理XM的配置文件
·带你深入了解"Java"中的“异常机制”
·为简化企业级系统开发而诞生的Spring
·J2SE综合介绍:深入理解JavaHelp结构的好处
·J2SE综合--对于JAVA基础知识精华总结
·Java语言深入:关于java数组的深度思考
·J2SE综合介绍:讨论关于Java占用内存的研究
·高级:编写多线程Java应用程序常见问题
·Java类完整构造执行顺序
·关于java中相对路径,绝对路径问题总结
·基础:深入理解Java对象实例生成的例子
·JAVA基础:Java变量类型之间的相互转换
·深入的理解嵌套类和内部类
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java开发下的设计模式简单说明
·JAVA语言关于字符串替换的思考
·编写高级JavaScript应用代码
·常用的JDBC连接数据库方法大全
·解决JSP开发中Web程序中文显示三种方法
·对于Spring初学者的学习建议
·Java开发编程规范大分享
·站在巨人肩膀上学好J2EE全攻略
·Java网络编程基础(四) ServerSocket类
·Java网络编程基础(三) Datagram类使用
·Java学习过程中应该深入理解的一些重点
·Java网络编程基础(二) Socket类的使用
  阅读排行
·Java语言深入--java调用C/C 的过程
·一个非常有趣的使用spring框架AOP例子
·初学者Structs中基本配置入门
·使用AJAX技术实现网页无闪自动局部刷新
·关于java中相对路径,绝对路径问题总结
·JAVA基础:一个struts hibernate入门实
·高级:lucene全文检索应用示例及代码简
·一个基于Java Socket实现文件传输示例
·Hibernate配置文件中的映射元素详解
·关于角色访问控制(RBAC)
·快速教您Apache Tomcat SSL的配置
·使用WEBWORK实现文件上传方法实例详解
·JSP/Servlet:< jsp-config>标签使用详
·在struts里实现dtree通用树型结构讲解
·JSP JavaBean Servlet工作原理实例讲解
网摘收藏: