发布于:2021-02-11 00:00:34
0
191
0
Oracle在标题为“ Avatar Persistence”(Avatar 的持久性)的标题下,引入了一个模型存储API,该模型可以使用统一的API(JSON)将对象保存在不同的数据库中。这些数据库可以是关系数据库或非关系数据库(NoSQL)。
由于Avatar持久性基于JPA(使用EclipseLink实现),因此只能通过JDBC驱动程序与其他数据库进行通信。以下示例说明了新的Model Store API的用法:
// define a connection to a data store var store = avatar.newStore(‘mysql’, { host: 'localhost', port: 3306, database: 'test', username: 'root' }); // define object 'Family' var Family = avatar.newModel('family', { "name" : { type : "string", primary : true }, "description" : "string" }); // define object 'Product' var Product = avatar.newModel('product', { "name" : { type : "string", primary : true }, "price" : "number", "quantity" : "integer" }); // create a relation between the two objects Family.hasMany(Product, { as : 'products', foreign : 'family' }); // bind the objects to the store store.bind(Family, Product); // create an product object and save it to the store store.connect(function() { Product.create({ name: 'myProduct', price: 1.00, quantity: 2, }, function(err, product) { console.log(JSON.stringify(product)); store.disconnect(function() { // done }); }); });
到目前为止,与Oracle数据库,MySQL和Derby数据库的JDBC通信已测试成功。在NoSQL方面,已经支持Oracle NoSQL数据库。MongoDB驱动程序将很快出现。
此外,作为小礼物,已为用户提供了模型存储API JDBC调用的异步处理。由于JDBC阻止,Avatar封装了调用并将结果返回为Promise。
客户端框架和JMS
完全删除了使用JSF表达式语言提供舒适绑定的客户端框架以及基于jQuery UI的呈现窗口小部件。从一开始,该框架就不是一个成熟的解决方案。
在用户界面方面,甲骨文在一年前表示,用户可能会退回到他们选择的框架(例如Angular,Knockout,Backbone,ember等),因为“仅”服务器和服务器之间正在进行基于协议的通信。客户端和客户端组件不依赖服务器。曾经的“罐头”现在变成了“必须”,其结果是整个客户端库都消失了。
JMS处于类似情况。已经有一个集成的解决方案,它将同步JMS调用(JMS 1.1 / Java EE 6规范)打包在一个异步调用中–就像JDBC层一样。但是,由于取消了Application Server作为运行时环境,因此JMS环境不再可用。但是,Oracle希望根据他们自己的内部t3协议开发一个远程瘦客户机,以便使用WebLogic应用服务器访问JMS资源。
REST
由于取消了应用程序服务器,REST,推送和套接字服务也遭受了损失。Oracle声称提供反馈的大多数用户都喜欢使用基于Node.js构建的实现并从那里定义服务。对于REST服务,它可以是Express包,对于套接字服务Node-WS和Server-Sent事件,可以是Node Package Manager(NPM)中的相应包。
希望我们很快就会知道,Avatar 2.0将会是什么样子。源代码尚不可用,但是应在“几周到几个月内”将其发布在项目页面上。到目前为止,“旧” Project Avatar仍在此处可见。Oracle希望从社区本身获得大量反馈。为此,请确保注册邮件列表。
作者介绍