CUBA 7 新特性 (下篇)
上篇我们主要介绍了 CUBA 7 中前端的一些主要功能。这篇我们介绍一下中间件的一变化和新特性。
中间件功能
前面关于新的界面 API 的描述内容比我预期的要多许多,所以在这一节,我会尽量简单点说!
实体更改事件
实体更改事件是一个Spring 应用程序事件。在实体已经进入数据存储、已物理插入且马上要提交事务时触发。这时,可以进行一些额外的检查(例如,在确认订单之前检查库存中的产品可用性)并在其他事务可见前对数据进行一些修改(例如重新计算总数)(显然需要使用“读已提交”事务隔离级别)。在这个事件处理器中你还可以通过抛出异常来中断事务,这是中断事务的最后一个机会,在某些极端情况下可能很有用。
还有一种方法可以在事务提交后捕获实体更改事件。
按照这个文档的描述查看示例。
事务型数据管理器
在开发应用程序时,我们通常使用分离的实体 ,这种实体不受任何事务管理。但是,在有些情况下使用分离的实体并不可行,特别是在需要满足 ACID 要求时 ,这时你就需要使用事务型数据管理器。它看起来与普通的数据管理器非常相似,但在以下方面有所不同:
l 它可以嵌入现有事务(如果在事务上下文中调用它)或创建自己的事务。
l 它没有 commit 方法,但是有 save 方法,save 方法不会立即提交事务,待附加的事务提交时才提交。
这里有相关示例。
JPA生命周期回调
最后,CUBA 7 支持 JPA 生命周期回调。 对于生命周期回调我们在文档中有精细的描述,这里我就不再重复了。可以在这里找到详细的描述。
兼容性怎么样?
任何重大版本的发布都是一个需要认真对待问题,特别有这么多看起来具有破坏性的变化时! 我们设计所有这些新功能和 API,同时考虑到向后兼容性:
l CUBA 7 支持旧的界面 API,同时在底层使用新的 API 实现这些旧的 API 功能。
l 我们还为旧的数据绑定提供了适配器,这些适配器继续适用于旧的界面。
所以,好消息是,从版本 6 到 7 的迁移应该非常简单。
总结
在结束这个技术概述时,我想提一下,还有其他重要的更新,特别是在许可方面:
l Studio 已取消10个实体的限制。
l 报表、BPM(业务流程管理)、图表和地图以及全文搜索扩展现在都免费并开源。
l Studio 的商业版致力于通过可视化设计器来提升实体、界面、菜单和其他平台元素的开发体验,而在免费版中主要通过编码的方式实现这些。
l 请注意,对于6.x 及更早版本的 Platform 和 Studio ,许可条款保持不变!
最后,让我再次感谢社区成员的所有支持和反馈。 希望你们会喜欢第 7 版! 根据传统,发行说明中提供了完整的更改列表。