问题标签 [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 投票
2 回答
164 浏览

xml - 是否有使用 XML 进行无开销对象序列化的模式?

就像你可以在 javascript 中使用 JSON 一样?至少静态属性?

或者甚至可能用于哈希表流?

希望找到类似的东西是否过于简单化

Object.Serialize(stream) 其中流是一个文件,可以通过您选择的其他可能的候选目标覆盖,使用一些默认格式,比如 XML?

使用 Object obj = stream.Deserialize() ...

0 投票
6 回答
1304 浏览

java - 桌面应用的对象持久化策略

我正在开发一个基于 Java 的桌面应用程序。我需要保存从应用程序对象模型生成的一些数据(最好保存到文件中)。还需要保护持久文件,以便其他人无法从数据中获取对象模型详细信息。做这些的最佳策略是什么?我的印象是,这些要求对于桌面应用程序来说非常普遍。但是,我还没有找到很多有用的信息。任何建议表示赞赏。

0 投票
3 回答
1434 浏览

delphi - 用于 Delphi 的运行时可更改的 ORM / OPF 对象持久性框架

我正在进行的项目之一涉及一个模块,该模块需要允许最终用户创建本质上等同于他们自己的“对象类”,存储他们可以在运行时设计和修改的数据结构/记录类型。用户还可以相当程度地自定义用户界面,但这不是这个问题的范围。

我已经看到,与我们正在努力使用此功能构建的最接近的示例将非常类似于 InstantObjects 在设计时提供的东西,除了我们的系统将在运行时提供它,并将类设计控件放在最终用户的手中(显然,他们通常在技术上相当复杂)。

我最近遇到了 Delphi Win32 的对象持久性框架列表:http: //tdelphihobbyist.blogspot.com/2008/01/win32-object-persistence-frameworks.html

关于其中哪些可能最有利于我们正在尝试创建的运行时灵活性的任何建议?

0 投票
1 回答
380 浏览

iphone - iPhone上是否有首选的数据库管理/对象持久性方法?

我见过几种方法,每种方法似乎都有显着的优点和缺点。我正在学习 iPhone 开发,我正在构建一个相对简单的应用程序,它的核心实际上只不过是对 3 或 4 个相关实体的 CRUD 操作。

我习惯了 ActiveRecord 类型的对象持久性。我在网上读到的 Cocoa Touch 的实现通常被称为非常慢。

我在网上看到的大多数示例(特别是 Pragmatic Programmers 截屏视频)都将 SQL 硬编码到控制器类中,这对我来说似乎不合适。似乎很老派(但在这种情况下,老派可能是最好的)。

我知道我们不能在这里讨论 SDK 3.0,但众所周知,CoreData 即将用于 iPhone,这当然会限制我的听众(我不确定我是否真的这么关心。它将是一个应用程序出售,但我不打算用它取代我的职业)

我还没有尝试过 Gus Mueller 的 FMDB,但我读过好东西。

你的一些经验是什么,什么有效,什么无效。你会推荐一个(仍然是新手)iPhone 程序员在哪里投入时间?

0 投票
2 回答
829 浏览

java - 为什么要“将类的实例作为实体存储在数据库中”?

我试图从Google Datastore API中理解一行:

JDO 使用 Java 类上的注释来描述类的实例如何作为实体存储在数据存储中,以及在从数据存储中检索实体时如何将实体重新创建为实例。

我敢肯定,对于大多数人来说,这是一个非常基本的问题。但我不明白为什么类对象需要存储在数据库中,然后再检索。为什么不改为定义您希望应用程序的数据存储看起来像什么,并根据需要仅存储类属性中的相关数据,而不是存储整个类或总是重复存储相同的属性?类的实例包含各种信息,在我看来,这些信息不需要在数据库中——方法、类变量、实例变量——我们在源代码中编写这些东西,我们不需要重现它在数据库中 - 我们只需要存储该类正在操作的某些相关数据。对?也许我不明白引用的陈述是什么意思。

0 投票
6 回答
13933 浏览

session - 会话对象中的经典 ASP Store 对象

我是经典 ASP 的新手,我需要用经典 ASP 编写 Web 应用程序,因为客户希望它使用经典 ASP。:(

无论如何!这是我的问题:

当我有一个名为 person 的类的对象时:


到目前为止,一切都很好...

在下一个请求中,我尝试读取会话变量,例如:

任何关于正在发生的事情的想法都会有很大帮助。

0 投票
8 回答
10534 浏览

python - 使用 Python,我可以保留一个持久字典并对其进行修改吗?

所以,我想将字典存储在持久文件中。有没有办法使用常规字典方法从该文件中的字典中添加、打印或删除条目?

看来我可以使用 cPickle 来存储字典并加载它,但我不知道从那里拿它。

0 投票
2 回答
4028 浏览

php - 跟踪 PHP 对象属性更改

我正在尝试跟踪对 PHP 变量所做的所有更改。变量可以是对象或数组。

例如,它看起来像:

然后使用对象缓存将该对象持久化到存储中。当 php 脚本再次运行时。

因此,当脚本第二次运行,或者另一个脚本运行并修改该对象时,我希望跟踪这些修改,无论是在它们完成时,还是在脚本执行后一次。

例如:

我想知道 'c' 已添加到对象中。

现在实际代码看起来像这样:

第二次加载:

我想知道的是'c'被推入 $storage->object 所以在“Storage”类中我可以将该值设置为持久存储。

我尝试了一些方法,这些方法有效,但也有缺点。

1)将所有对象包装在一个“可存储”类中,该类跟踪对象的更改

“Storable”类只是将实际数据对象保存为属性,然后提供 __get() 和 __set() 方法来访问它。当对象的成员/属性被修改或添加时,“Storable”类会注意到这一点。当访问 Storable 类上的 __get() 属性时,将返回该属性,该属性包装在另一个 Storable 类中,以便对每个新级别递归地跟踪其更改。

问题是对象不再是本机数据类型,因此您不能在数组上运行数组函数。

例如:

因此,我们必须将这些数组函数实现为 Storable 的方法。

例如:

这一切都很好,但我想知道是否有可能以某种方式使用本机函数,以减少我正在开发的库的开销,同时跟踪更改,以便可以将任何更改添加到持久存储中。

2)忘记跟踪变化,只更新整个对象结构

这是使程序中的对象与实际存储在对象缓存(可以在不同的机器上)中的对象保持同步的最简单方法。

但是,这意味着当单个索引更改时,必须通过套接字将整个结构(例如具有 1000 个索引的数组)发送到对象缓存。

3)在本地保留对象的镜像

我也尝试过克隆对象,并保持克隆对象不变。然后,当 PHP 脚本完成所有处理后,递归地比较克隆与修改的对象,并将更改的属性提交回对象缓存。

然而,这需要下载整个对象才能使用它。它还要求对象占用两倍的内存,因为它是克隆的。


我知道这很模糊,但是涉及到相当多的代码。如果有人想查看代码,我可以发布它,或者把它放在一个开放的 SVN 存储库上。该项目是开源的,但我还没有建立一个公共存储库。

0 投票
1 回答
2906 浏览

nhibernate - 将对象重新附加到会话时出现 NHibernate NonUniqueObjectException(带锁)

基本执行顺序:

  1. 查询集合,PersistentObjects然后与会话分开缓存。
  2. 该集合被传递给一个模块,该模块需要将它们重新附加到会话中,以便延迟加载某些属性(使用session.Lock(obj, LockMode.None))。
  3. 在模块完成处理后,另一个模块会尝试为初始化该操作的用户提供一些使用统计信息SaveOrUpdate的对象。UserSetting
  4. session.Flush()NHibernate 上抛出一个NonUniqueObjectException.

我发现解决此问题的一种方法是获取对象的新副本:

而不是重新附加session.Lock. 然而,这并不是最优的,因为一些记录集可能非常大,并且单独重新获取每个对象可能会拖累性能。

非唯一的对象是仅存在于PersistentObject类而不存在于类上的引用对象UserSetting。所以我不明白为什么刷新会导致这个异常。

我已经尝试在模块完成后驱逐缓存的对象,但这无济于事。

有谁知道将对象附加到可以避免此问题的会话的更好方法?

0 投票
2 回答
695 浏览

iphone - 将对象图持久保存到 iPhone 上的最佳方法

我在 iPhone 平台上的 Objective-C 中有一个对象图,我希望在关闭应用程序时坚持闪烁。该图有大约 100k-200k 个对象并包含许多循环(按设计)。我需要能够尽快读/写这个图表。

到目前为止,我已经尝试过使用 NSCoder。这不仅与循环有关,而且还需要很长时间和大量内存来持久化图形 - 可能是因为在后台使用了 XML 文档。我也使用过 SQLite 数据库,但单步执行这么多行也需要大量时间。

我曾考虑使用 Core-Data,但担心我会遇到与 SQLite 或 NSCoder 相同的问题,因为我相信 core-data 的后备存储将以相同的方式工作。

那么有没有其他方法可以以轻量级的方式处理这个对象图的持久性 - 理想情况下我想要像 Java 的序列化这样的东西?我一直在考虑尝试Tokyo Cabinet或将一堆 C 结构占用的内存写入磁盘——但这将是大量的重写工作。