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

delphi - 当有问题的类在编译和链接时存在并且在代码中明确存在时,在运行时引发的 EClassNotFound 真正意味着什么?

我在表单的 rtl Streaming 中发生运行时错误,导致在执行 TReader.ReadRootComponent 时引发异常 EClassNotFound。特定的错误消息是“找不到类 TActionList”。

奇怪的是:

  1. 我的主表单使用操作列表。
  2. 为了好玩,我将 ActnList.pas(来自 VCL 源文件夹)添加到我的项目中,以尝试修复它。

当我实例化一个直到几分钟前我还在工作的表单时,就会发生这种情况。我所做的更改是在一些子框架代码中:我用 ifdef 标记删除了它的所有实现部分代码,因为我正在模拟一些框架,用于单元测试和原型。

我尝试将操作列表类添加到项目中,并且尝试了使用和不使用各种编译器和链接选项,但是,我仍然得到这个异常。显然有什么奇怪的事情发生了。必须有另一种奇怪的方法来解决这个问题。

事实上,似乎发生了一些非常奇怪的事情。引发此错误时,我得到以下调用堆栈:

似乎 nil 是故意的,在 TReader.ReadDataInner(Instance:TComponent) 中:

更新:我相信这个问题的答案是理解梅森提到的“序列化上下文”。而且,是时候承认我自己的愚蠢了:我从项目中删除了框架的父级,没有意识到它是框架的父级。我通过存根TMyFrameParentas的类型声明来解决它丢失的TMyFrameParent = class(TFrame)问题,这反过来又导致了有问题的条件。我将问题留在这里是因为我认为将来在神秘的情况下何时发生此异常以及如何解决它可能会非常方便。特别是,Mason 有一些关于“序列化上下文”以及它们如何应用于类名查找的非常有趣的信息。

0 投票
2 回答
5164 浏览

doctrine-orm - 我应该如何在教义 2.1 中发布持久/更新操作,这涉及重新保存到数据库?

使用学说 2.1(和 zend 框架 1.11,这对这件事并不重要),我怎样才能进行发布持久化和发布更新操作,这涉及重新保存到数据库?

例如,根据刚刚生成的主键 id 创建唯一令牌,或者为上传的图像生成缩略图(实际上不需要重新保存到数据库,但仍然)?


编辑 - 让我们解释一下,好吗?

以上实际上是关于两种情况的问题。这两种情况都与以下状态有关:

假设我有一个User实体。当对象被标记为持久化后被刷新时,它将具有mysql的正常自动生成的ID——这意味着运行数字通常从1、2、3等开始。
每个用户都可以上传一张图片——这他将能够在应用程序中使用——该应用程序也将在数据库中记录。所以我有另一个实体叫做Image. 每个Image实体还有一个自动生成的 ID - 与用户 ID 相同的方法。

现在 - 这是场景:

  1. 当用户上传图像时,我想在该图像保存到数据库后立即为其生成缩略图。这应该发生在每个新的或更新的图像上。
    由于我们试图保持智能,我不希望生成缩略图的代码这样编写:

    $图像 = 新图像();
    ...
    $entityManager->persist($image);
    $entityManager->flush();
    callToFunctionThatGeneratesThumbnailOnImage($image);

    而是我希望它在对象的持久化(嗯,持久化对象的刷新)上自动发生,就像prePersistorpreUpdate方法一样。

  2. 由于用户上传了一张图片,他得到了一个链接。它可能看起来像:http://www.mysite.com/showImage?id=[IMAGEID].
    这允许任何人只需更改此链接中的 imageid,并查看其他用户的图像。
    所以为了防止这样的事情发生,我想为每个图像生成一个唯一的令牌。因为它真的不需要很复杂,所以我考虑过使用图像 id 的 md5 值,并加一些盐。
    但为此,我需要拥有该图像的 id——我只有在刷新持久对象后才会拥有它——然后生成 md5,然后将其再次保存到数据库中。

了解图像的链接应该是可公开访问的,因此我不能只允许经过身份验证的用户通过某种权限规则查看它们。

0 投票
0 回答
44 浏览

java - 坚持与面孔

我已经学习/从事 J2EE 项目大约 3 个月了,这就是我所知道的。

  1. 如何在 mysql 中创建数据库(事实上,我已经使用 perl 和 php 做了 12 年)
  2. 我可以在 netbeans 中找到足够的方法,从我的数据库设计中创建实体,制作 jsf 或 jsp 页面,并构建控制器和外观来处理简单的创建删除和更新。
  3. 我已经成功地建立了经理类来维持更复杂的一对多和一对多的关系。但是,如果我使用隐藏字段来传递整数 id 并在每次发出请求时进行大量查询,我仍然处于一种 cgi 模式。
  4. 我已经开始学习面孔,并发现它们是一种更快、更时髦的工作方式。

我的问题如何使用这种开发模型保持多对多关系。三天研究我无法解决......帮助

在此先感谢,我会认真对待所有建议,也许会想到一个非常容易的新职业。

0 投票
1 回答
90 浏览

database - 对象数据库:更改类层次结构

我正在将我读入面向对象的数据库中,并且必须进行一些演示。

我没有得到并且无处可以找到的东西是以下问题:

当我更改我的类层次结构时,数据库的数据会发生什么。

例如,我有 A 从 C 扩展。但后来我注意到 C 必须从 B 扩展,B 必须从 A 扩展:

我存储在数据库中的(用户)数据会发生什么变化?

如果数据库不能被采用,数据就不能再使用了,对吧?因此,例如,当我有一个社交网络时,所有数据都将丢失并且网络必须重新开始......我在这里还是我错过了什么?

0 投票
1 回答
185 浏览

model-view-controller - 如何更改单个查询字符串参数,可能通过控制操作?

在过去的三天里,我一直在努力寻找一种方法来完成我认为应该是一件简单的事情。我自己这样做或在网络上搜索解决方案都没有帮助。也许是因为当我进行研究时,我什至不确定要寻找什么。我会在这里尽可能多地解释:也许有人能帮助我。

我不会说我是怎么做的,因为我已经尝试了很多方法,但没有一个因不同的原因起作用:我更喜欢从你那里得到新的建议。

在 Web 应用程序的大多数页面中,我有两个链接(但可能更多),如下所示:

  • 选项 A
  • 选项 B

这是部分视图,由控制器操作返回。

用户可以选择或同时选择两个(全部)值,但他们不能永远都不选择它们:这意味着必须始终选择至少一个。

这些链接必须在几乎所有页面中都可以访问,并且它们不应该重定向到不同的页面,而只是将此信息存储在某个地方,以便在操作需要过滤返回的内容时重用:一个始终可访问的位置,关于当前控制器,操作或用户(包括未经身份验证的用户)(会话?cookie?)。此信息用于过滤整个 Web 应用程序中显示的内容。

因此,问题不在于如何创建其业务逻辑,而在于如何(以及在​​何处)存储此信息:

  • 不弄乱查询字符串(意味着:尽可能保持查询字符串为空/干净)
  • 无需重定向到其他页面(用户必须获取当前页面,只是内容不同)
  • 允许此信息在所有视图之间保留,直到用户再次单击以更改选项

我的目标是将这些信息存储在一个模型中,该模型将包含所有选项及其选择状态(开/关),因此适当的 PartialView 将知道如何显示它们。此外,我可以将此模型发送到将处理选项更改的“事物”。

谢谢。

更新

按照 Paul 的建议,我采用了 Session 方式:

在此之后,我已经覆盖(不确定“覆盖”的正确结合:) OnActionExecuting():

获取选项选择()...

我认为这段代码可以更好,但现在我只想让它工作,但它没有。

也许那里还有其他问题(实际上非​​常肯定),但我认为主要问题是 OnActionExecuting 被从 BaseController 继承的控制器中的每个操作调用,因此它不断切换 userOptionPreferences.Selected 开/关,但我没有'不知道如何让 GetOptionSelections() 在每个视图中只被调用一次:类似于旧的 Page_Load,但用于 MVC。

最后更新 AKA 解决方案 好的,使用会话方式,我已经设法存储了这些信息。

另一个问题并不是这个问题的真正主题,我已经设法解决它创建一个新的操作来处理选项的更改,然后重定向到调用方 URL(使用通常的 returnUrl 参数,但作为操作参数)。这样,每次调用仅进行一次选项更改。

我唯一不喜欢的是我不能简单地使用 UserOptionPreferences 属性,因为它不会更改会话值,而只会更改内存中的值,所以我必须使用新对象的属性来设置属性每次状态:没什么大不了的,但也不是很好。

0 投票
1 回答
291 浏览

ruby-on-rails - 如何在 Rails 中持久化对象

我正在实现一种 ruby​​ 在线终端(仅供练习)。我正在使用来自简单 js Web 应用程序的 AJAX 来调用评估“终端”输入的方法。为了避免环境问题并让用户创建自己的对象,我使用了“绑定”对象。问题是我不知道如何保持绑定。

我的第一个想法是创建一个绑定,每次用户访问应用程序时,它都会在帖子请求之间持续存在。在那一刻,使用唯一键和新绑定创建了一个键-对象对。然后将密钥传递给客户端。当用户通过 ajax 发送字符串进行评估时,我发送密钥。然后,我可以获取绑定对象并对其进行更新。

我试过类似的东西:

但是在执行时,代码无法创建键值对。事实上,我在该行之后尝试执行的任何操作都失败了。我不明白为什么。

实际上,我认为如果我可以序列化绑定它会起作用,但我认为它可能效率低下,因为网络延迟和绑定的可能增长。

0 投票
2 回答
2705 浏览

c# - 如何在 C# dll 中保持对象“持久”?

我用 C# 编写了一个 dll,提供了一个类供使用。该 dll 由我编写的 C 程序调用。(它是某个程序的插件。我必须用 C 编写插件的代码,但我想使用 .NET 的功能,因此是 dll)。

在 dll 中,我想打开一个流并做其他应该在两次调用 dll 之间持久的东西。这在下面的代码中由私有成员连接器表示。

当我调用 InitializeE() 并随后调用 Timestep() 时,连接器对象指向 NULL。

当我从 C 代码中调用 Timestep() 时,我必须做什么才能访问之前创建的连接器实例?

我可能根本就朝错误的方向搜索。任何提示表示赞赏。

0 投票
2 回答
363 浏览

ruby - Ruby 守护进程为瞬态 Ruby 实例保持对象活动

Ruby 是否提供了一种机制来在不同运行的 Ruby 进程之间共享变量(更重要的是,类对象和我认为对此有用的任何其他数据抽象)?

例如,如果我有一个类被实例化、初始化并仔细调整到某个状态,我希望该状态在全球范围内可供我所有原本独立的 Ruby 和 Irb 全天运行,超过最初使用的进程的生命周期它。

我现在正在考虑有效解决此问题的一种方案是创建一个微型 Rub​​y 脚本,它仅充当我选择的持久对象和变量一天的保管人,并使用守护程序 gem或类似的方式将其守护。早上第 1 次设置,在所有事情结束时晚上拆卸。

在一天中,另一个 Ruby 程序的许多实例(包含我的实际业务逻辑的那个)会来来去去,但仍能够使用和操作我选择的对象,这些对象在上面的守护进程中保持活动状态。

我应该研究如何将复杂对象序列化到磁盘吗?(实际上更喜欢 RAM 而不是磁盘,因为它在一段时间内都是临时的,并且重新创建它只会花费很多时间)

0 投票
1 回答
173 浏览

javascript - 用于客户端应用程序的跨浏览器、对象持久性库

我正在HTML 应用程序(HTA)中创建一个基于客户端的应用程序,我想知道是否有一个类似于 python 的shevle的对象持久库满足以下条件:

  • 应该能够读写文件
  • 跨浏览器:至少应该在 HTA 和 Firefox(通过 XULRunner)上工作,这样我就不会被任何供应商束缚。
  • 以 JavaScript 形式编写

无论使用何种浏览器, TiddyWiki都能够自我保存,尽管必须重构保存和检索文件的代码以满足我的需要。

0 投票
1 回答
289 浏览

c++ - 类和结构的内部存储

我想使用指针 magikry 使用以下将字节数据写入文件的方法保存 C++ 类:

  • 参数:

    • buffer— 指向包含要写入的字节数据的用户提供缓冲区的指针
    • length— 缓冲区长度(以字节为单位)
  • 例外:

    • E_SUCCESS— 方法成功。
    • E_INVALID_STATE— 文件尚未打开。
    • E_ILLEGAL_ACCESS— 未打开文件进行写操作,或因权限不足而拒绝访问。
    • E_INVALID_ARG— 出现以下任一情况:
      • 指定的缓冲区包含一个空指针。
      • 指定的缓冲区长度等于或小于 0。
      • 文件句柄无效(文件被其他方法关闭,或者内存损坏)。
    • E_STORAGE_FULL— 磁盘空间已满。
    • E_IO— 由于突然弹出媒体或检测到文件损坏,发生意外的设备故障。

我不想假设会有任何类型的缓冲,尽管我相信每个字节不会导致整个闪存块被重写,但我想知道是否有更好的方法来写入所有数据字段一个类(没有别的,例如静态字段),例如,一个指向对象(*this)的指针?