NHiberate PK Borland Eco ----的若干疑问
1.关于POJO的定义。
Plain Old Java Object
这种平凡的对象充当实体定义有什么好处呢?虽然从定义上看起来是Plain了,但是运行的时候实际上又并不Plain,因为接入了一大堆和ISession相关的接口,用于延迟加载或其它目的。
我觉得Borland的Eco做得非常好,实体不能脱离容器(EcoSpace)而存在。这样就不会有Hibernate关于实体生命周期的处理(transient,detached,persist三种状态切换的烦恼,以及延迟加载时是否挂在ISession的烦恼)。
Hibernate是反EJB诞生的,用POJO取代实体Bean,但这明显是纠枉过正。Eco同样是轻量级,只不过把容器接口(EcoSpace)直接从中间服务器拉到应用层面上而已。
也许有人认为POJO式的定义,使得POJO可以直接作为DTO使用。但事实上,如果是Web UI层直接使用,根本不需要DTO。如果在SOA中使用,也许通过转成表格行服务更有效些。
2.HQL PK OCL
Hibernate提供了HQL语言以供对象查询,但HQL不过是SQL的变种,这种查询仍然是纯粹的基于持久化数据库的。
OCL则是一种纯粹的内存对象查询,它和SQL截然不同,也并非大家想象中的OCL会转成SQL去操作。(当然,Borland Eco中有一个PsQuery,要以将OCL转成SQL对数据库查询,但只是一个相当简陋的子集)。
现在的问题是:ORM的真正目的并不是让大家使用方便,而是将业务逻辑的运算从数据库移到内存中,HQL并不能完成这样的使命。如果采用面向表格的模式,如Net中的DataSet,可以有非常强的本地内存化操作。在Eco中,有Ocl可以对EcoSpace中的任何对象进行操作。HQL呢?----它终究不过是DAL层的东东。
3、但是Hibernate为什么能够在Java里流行起来,也许只是因为在Java的Web框架中,几乎任何操作都被简化成了单实体操作,而Hibernate基本上还是可以完成单实体操作的任务的。
4、现在我碰到了一个问题是:
我在Asp.net中使用NHibernate,当我操作一个单据,如订单的单据,它有一些主表的信息(单据头),也有子表的信息。
如果在Eco中,我要处理的很简单,不管是新增一张单据,还修改一张单据,我只需要记住这个订单的Key就行了(如果是新增的订单,EcoSpace会生成一个临时Key),然后每次重新进入这个页面时,通过Key从EcoSpace中取得有史以来对这个Key的订单的任何操作遗留下来的状态。
然后有一个保存按扭,啪啦一下就把这张单据所有的更新持久化到数据库中去了。
一点烦恼都没有啊,EcoSpace处理一切,在Web层中我只有保存Key的信息就行了。
可是,当我在NHibernate中处理相似的问题时,我傻眼了。
a.由于是POCO,NHibernate并未对新增的对象(Transient)和容器中的对象(Persist)进行统一的健值处理,所以同一张单据,你新增的时候,要自己缓存一个对象,而更新的时候,你又要记下键值从ISession中获取。
这是第一个不爽。
b.好,将就些吧,这个我忍了,为了整个单据在新增及更新上保持一致,我准备将整个订单对象(SaleOrder)在Web中缓存起来,可是,在提交的时候,我又晕了,跟踪SQL发现,当我持久化这个对象时,我发现NHibernate竟然把整个SaleOrder的任何数据都全部提交一遍,也就是说,在跨ISession操作时(因为是Web应用,每次Request都会开关ISession),对象的脏检查机制失效了。
现在我要问Hibernate高手的问题就是:如何在跨ISession操作时,一个被Detached的对象的修改状态,如何在重新Tached时,能被感知到,这样持久化时只持久被更新的部分?
c.就前面这几个问题,已经严重不爽了,更不说NHiberate没有象Eco一样提供强大的OCL操作,对于复杂的业务逻辑处理,只有原始的操作IList进行了。
相关推荐
卵巢癌风险检测基准数据集5万例52特征合成病历
医疗健康研究数据集:OC-Risk50K卵巢癌临床与风险分层基准数据集,基于结构因果模型按临床诊断参数、生物标志物分布与影像特征构建的5万例独立患者档案。目标类别1:1均衡(2.5万卵巢癌病例与2.5万非癌对照),共52列(46个诊断前特征、3个诊断后时序特征、1个分区标签、2个目标变量),内置Train 35000、Validation 7500、Test 7500三段划分,随机种子固定42保证可复现。支持两大预测任务:任务A早期卵巢癌检测二分类,任务B风险分层多分类。专为机器学习实验、表格基础模型评估、因果特征选择与早期癌症研究设计。合成数据不含真实患者信息,适合医疗AI研究者与算法工程师使用。
开曼群岛国界、省界、市界矢量数据SHP格式.zip
本资源为《开曼群岛国界、省界、市界矢量数据SHP格式》压缩包,文件大小约 47.7 KB,适合按项目统一保存和使用。实际覆盖范围与内容请结合包内文件及说明核对。 从压缩包目录可见Shapefile 主文件(.shp)、空间索引(.shx)、属性表(.dbf)、投影说明(.prj)、编码说明(.cpg)。解压后请保持配套文件同名并保存在同一目录,再加载需要的图层。 可结合实际内容用于 GIS 学习、行政区划展示、专题地图制作、分区统计及空间叠加分析。各地区行政层级的含义可能不同,应核对实际属性字段,避免直接将所有层级理解为省、市、县。 可使用 QGIS、ArcGIS 等支持 Shapefile 的软件加载 .shp 文件。叠加其他图层或关联统计表前,请检查坐标系统、字段编码与关联标识,避免仅凭名称匹配。 来源、年份、精度、坐标系、记录数、字段含义及使用条件,以实际文件和原始资料说明为准。
EI复现基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
内容概要:本文档由“荔枝科研社”提供,系统整合了多个科研领域的高质量技术资源与服务,重点涵盖智能优化算法、机器学习与深度学习、路径规划、无人机应用、电力系统管理、信号处理、图像处理、通信技术及车间调度等方向。平台提供大量基于Matlab、Python、Simulink和PSCAD的代码实现与仿真模型,聚焦于高水平学术论文(如EI、IEEE期刊)的复现工作,涉及微能源网能量管理、深度强化学习、共享储能配置、微电网优化调度、负荷预测、电力系统稳定性分析等前沿课题。文档还深入探讨了可视化设计、坐标系统处理、动画渲染及跨语言协作等工程技术细节,强调科研中“借力”与创新思维的重要性,并提供了完整的资源获取路径与实践指导。; 适合人群:具备一定编程与仿真基础,从事电气工程、自动化、能源系统、人工智能、控制科学、通信工程等相关领域的研究生、科研人员及工程技术人员,尤其适用于需要复现高水平论文或开展相关课题研究的专业人士。; 使用场景及目标:① 学习并复现EI/IEEE级别科研论文中的算法与仿真模型,提升科研创新能力;② 获取电力系统优化、深度学习预测、路径规划等领域的成熟代码资源,加速科研项目进展;③ 借鉴其在可视化、跨语言协作、算法验证和工程实现方面的先进实践方法,提高科研工作的规范性与可复现性。; 阅读建议:建议用户按照提供的目录体系化浏览资源,重点关注与自身研究方向匹配的代码实例,并结合网盘链接和公众号获取完整资料,在实践中调试与优化代码,以达到深入理解和灵活应用的目的。
基于深度确定性策略梯度强化学习DDPG-PID参数自适应优化仿真(Simulink仿真实现)
内容概要:本文系统解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,围绕优先级规划策略构建了一个涵盖地图解析、拓扑建模、路径调度与可视化呈现的全流程框架。该框架采用四层架构分离几何、拓扑、调度与展示逻辑,核心创新包括动态边权膨胀机制以缓解硬封锁导致的不可解问题,基于节点预留历史的高效冲突查询结构,以及由几何惩罚驱动的局部时间同步优化策略,显著提升了冲突消解效率。框架支持多种同步策略,兼顾实现简洁性、鲁棒性与大规模场景下的计算效率,并集成Petri网整数规划路径作为对比方案,具备良好的可扩展性与教学参考价值。; 适合人群:具备MATLAB编程基础,从事机器人路径规划、智能调度或相关领域研究的科研人员及研究生。; 使用场景及目标:①学习和复现基于优先级规划的多机器人路径规划算法;②研究冲突消解机制如动态边权膨胀与时间同步策略的设计与权衡;③作为MAPF教学与算法开发的工程化参考框架; 阅读建议:建议按文中所述的数据流顺序逐步阅读各模块实现,重点关注各层之间的接口设计与信息传递机制,动手调试不同地图与智能体规模下的运行效果,深入理解算法设计背后的工程取舍与优化逻辑。
【雷达信号处理】匹配滤波与脉冲压缩研究(Matlab代码实现)
内容概要:本文系统解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,重点围绕优先级规划算法展开,涵盖从地图解析、拓扑构建、路径规划、时间同步到冲突消解与可视化的全流程。框架采用四层架构设计,实现了空间规划与时间调度的分离,并引入动态边权膨胀、节点预留历史、几何惩罚驱动的局部同步等关键技术,显著提升了算法效率与可扩展性。文章深入剖析了多种同步策略的设计取舍、交换冲突的处理机制以及基于Petri网的整数规划双阶段优化方法,强调了信息前移与模块化解耦在工程实现中的价值,并通过完整的可视化链路支持算法行为的直观验证与调试。; 适合人群:具备一定MATLAB编程基础,从事机器人路径规划、智能调度、自动化控制等相关领域的科研人员与工程技术人员,尤其适合研究生及以上学历的研究者。; 使用场景及目标:①用于多机器人系统在仓储物流、无人机编队、自动驾驶等场景下的路径规划算法研究与仿真验证;②为MAPF教学与算法复现提供可运行、可调试的参考框架;③支持对优先级规划、冲突消解机制、Petri网建模等核心技术进行改进与拓展。; 阅读建议:建议按文中所述的数据流顺序逐步学习各模块实现,重点关注接口设计与算法逻辑的衔接,结合代码实际运行与可视化结果进行调试分析,同时可尝试替换不同同步策略以评估性能差异,深入理解框架的可扩展性与工程权衡。


