问题标签 [object-persistence]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8911 浏览

ruby-on-rails - has_many 关系中的 Active Record 对象何时保存?

我正在使用 Rails 1.2.3(是的,我知道)并且has_many对对象持久性的工作方式感到困惑。

为了举例,我将使用它作为我的声明:

据我了解,除其他外,这会生成一个方法User#assignments.build,该方法创建一个Assignment对象,该对象user_id是接收实例的id(并且其其他字段在参数中指定),但不会将此对象保存在数据库中。该对象可以稍后通过调用来保存Assignment#save!

但是,我一直将其用作教程和参考的 The Pragmatic Programmers' Agile Web Development with Rails, Second Edition说:

如果父对象存在于数据库中,则将子对象添加到集合中会自动保存该子对象。

这里似乎有矛盾。我想知道的是:

  • 如果我这样做some_user.assignments.buildAssignment对象是否保存?
  • 如果我这样做some_user.assignments << Assignment.newAssignment对象是否保存?
  • 如果我这样做some_user.assignments << Assignment.create了,是进行了两次数据库调用,还是仅进行了一次?如果我Assignment在创建对象和添加对象之间修改对象会some_user.assignments怎样?
  • 如果我save!Assignment对象User尚未保存在数据库中,会发生什么?

PS我不只是User#assignments.create用于所有事情的原因是因为它不允许我将初始化外包给外部方法,而我希望能够做到这一点。我也不想多次访问数据库。

0 投票
2 回答
256 浏览

sqlite - SQLite 它在哪些平台上运行?

我想在 C++ 中使用 SQLite 进行对象持久性来制作游戏(我正在考虑使用 SDL)。无论如何,SQLite 是如何跨平台的?它适用于 Windows、Mac、Linux 和 Android,对吗?黑莓、iOS、任天堂便携式和控制台系统以及 Playstation 和 XBox 系统怎么样?它在那些系统上工作吗?或者如果不是,什么在这些系统上工作。如果我的目标是超跨平台,有没有比 SQLite 更好的解决方案?

另外-我应该使用普通序列化,例如增强序列化吗?我想使用 SQLite,因为我不想将平面文件用于对象存储,因为我觉得加载对象会更快 - 特别是因为我可能并不总是按顺序加载对象。

我的想法是创建我自己的带有加载和保存函数的串行抽象基类,并从中派生类,并为每个类编写自定义加载和保存函数以与 SQLite 数据库交互。

我想知道是否有人也可以就此提出任何更好的想法。

0 投票
1 回答
1156 浏览

android - 如何在 ORMLite 中“映射”所有数据库实体扩展的基础对象

我有一个对象,我称之为BaseObject所有持久化的类都扩展。这个类有一个_id字段,dateCreateddateModified,等等...... 与扩展这个基础对象的所有对象相对应的数据库表显然有存储这些值的列。

如何使用注释设置这些字段,以便将所有这些字段保存到数据库中?我可以这样做还是需要将这些字段直接添加到 POJO 中?我在我的基础对象下面包含了一个扩展它的类。

这是超类:

任何帮助,将不胜感激。谢谢你。

0 投票
6 回答
10458 浏览

python - *大* python 字典,具有持久性存储,用于快速查找

我有 4 亿行唯一的键值信息,我希望可以在脚本中快速查找这些信息。我想知道这样做的巧妙方法是什么。我确实考虑了以下内容,但不确定是否有一种方法可以对字典进行磁盘映射,并且除了在创建字典期间之外不使用大量内存。

  1. 腌制字典对象:不确定这是否是我的问题的最佳解决方案
  2. NoSQL 类型 dbases :理想情况下,希望对第三方的依赖最小的东西加上键值就是简单的数字。如果你觉得这仍然是最好的选择,我也想听听。也许它会说服我。

如果有任何不清楚的地方,请告诉我。

谢谢!-阿比

0 投票
3 回答
948 浏览

javascript - JavaScript / Google v8 的持久性框架

是否有任何类型的 JavaScript 和/或 Google v8 引擎的持久性框架?

我想存储(序列化)整个对象图(包括例如函数)并稍后重新加载它。JSON 是不够的,因为它不允许存储函数并且只允许树状结构(即没有两个对象引用同一个对象)。

我需要能够做到这一点(即在我编写嵌入 v8 的程序时不知道 JavaScript 代码),因为我希望我的程序的用户能够使用 JavaScript 自定义它,但我需要存储我的程序的状态(包括自定义的状态)并稍后重新加载。因此我需要存储 JavaScript 引擎的状态。

编辑:

例子:

假设我们有以下代码:

那么(没有关于程序逻辑的任何元信息)是否可以序列化obj并稍后反序列化它,以便obj.b (2)在反序列化之后提供与序列化之前相同的结果?

第二次编辑:注意关闭。

0 投票
1 回答
1541 浏览

.net - 客户端缓存 C#

我的 wpf 客户端在启动时从服务器加载了很多常备数据。所以,我想在客户端实现一个缓存策略。

我知道 .NET 框架 4 中的新 System.Runtime.Caching 命名空间。不幸的是,只有一个内存缓存。我不想在客户端每次启动时加载大量数据。所以我正在寻找一个持久的客户端缓存。

你怎么看待这件事?

另一个想法是我使用 OODB(如 db4o 或 VelocityDB)进行客户端缓存。这是一个坏主意吗?我在客户端缓存方面没有任何经验。

感谢您的回答和建议。

亲切的问候,亲

0 投票
1 回答
1116 浏览

android - 在 android Application 类中持久化状态

我正在开发一个包含 10 多个活动的 Android 应用程序。我有一些状态对象,我几乎在每个活动中都可以访问它们,为此,它们在 MyApplication 类中实现为全局静态变量。

我注意到只要用户在应用程序中,这种方法就可以了。但是,当他按下主页按钮并打开另一个应用程序,然后通过“最近的活动”按钮返回我的应用程序时,我看到 Android 系统从 MyApplication 重置了静态,所以我必须处理 NullPointerExceptions。我知道这种行为是由Android杀死并重新创建应用程序进程引起的。

我知道保留此类数据的最佳方法是使用 SharedPreferences 或 SQLite,并且我在 onCreate for 中检查 MyState==null 并恢复它没有问题,但问题是我不知道何时正确存储我的状态对象(在首选项或数据库中)。我试图覆盖 MyApplication 的 finalize() - 不好,我看到 onLowMemory 可能不会被调用,我不知道如何使用 onPause、OnStop 等,因为我有太多的活动,序列化反序列化会相当多减慢应用程序。

有什么想法吗?提前致谢!

0 投票
2 回答
308 浏览

java - 为什么我尝试保存图像时收到 NullPointerException?

我正在尝试将图像保存在我的应用程序中。但是当我尝试持久化图像对象时出现空指针异常。这是我的图像类:

以下是我的 servlet 代码,它给出了异常:

谁能告诉我为什么我会得到这个 NullPointerException?提前致谢。

0 投票
1 回答
300 浏览

.net - 对 .NET 的 Karvonite NoSQL 文档数据库/持久性存储有任何经验吗?

有没有人使用Karvonite作为 .NET 桌面应用程序的持久存储?我看到他们刚刚在 2012 年 11 月推出了新版本 5。

看起来很有希望:

  • 数据模型的映射看起来很简单
  • 非常轻量级的部署
  • 与 .NET 生态系统的良好集成

似乎它可能是嵌入式 RavenDB 的轻量级替代品。

我认为它可能是 SQLite 的 NoSQL 等价物。

但是网络上的信息很少,这让我很担心。

你有什么经验?

0 投票
3 回答
1380 浏览

java - 实现 Map 的保存(或提交)和回滚方法

我正在寻找一种快速便捷的方法来将 save() 和 rollback() 添加到标准 Map。假设我有一个表类的对象“表”,它又具有一个名为“行”的私有映射。我想要实现的是一种快速且没有内存浪费的 Row 方法,可以执行以下操作:

实际上,我的设计很简单:当调用 addRow() 时,我将行放在地图中;没有缓冲区,没有临时元素;我只是将整个 Row 实例传递给 rows 集合。但我需要一种快速的方法,并且(如果可能的话)避免重复行。

任何的想法?