需要添加其他信息以选择较少的计算工作

时间:2015-08-03 13:38:25

标签: java mysql sql hibernate orm

我有一个webapp,显示有关其房屋,房间和房屋内物体的用户信息。有一个桌子活动,包括与房屋(房间或其对象)相关的所有事件。

所有这些事件都是在另一个系统中创建的,并通过集成进入应用程序。

表格事件包含:

  • event_guid(PK)
  • GUID
  • 描述
  • 时间戳

type包含对象表名称(flat,room,sensor等), guid在这张表中包含它的guid。

当用户打开页面时,他或她需要查看过去7天内发生的所有事件。 字段类型,guid和时间戳被索引在一起。

当我从此表中获取索引字段时,一切正常。 但是现在我必须添加一个位于另一个表中的附加信息(需要行可以通过表中的guid找到哪个名称存储在events.type中)。它是对象的名称,存储在一个表的名称字段中(表格平面,房间,传感器等)。 我试图添加一个额外的表EventView,如:

public class EventsView {
    private Events events;
    private String objectName;
    ...
}

但我认为这是一个愚蠢的决定。 现在我需要为每个已创建的事件行创建另一个View对象,并为其添加一个对象的名称,如

events = eventsService.findByIndex(objectClassName, object.getGuid(), dateFrom);
String objectName = object.getName();
for (Events event : events) {
    eventsView.add(event.getEventsProtocolView(objectName));
}

你能告诉我有没有正确的建议来解决这个问题?并且不要为每个关于事件的问题创建2 * n个对象。

另外我认为在事件表中添加一个额外的字段并在集成期间设置它是一个糟糕的决定。事件对象非常频繁地创建。在保存任何事件之前从db获取值 - 它很慢。 我需要在db中使用一个过程吗? (我使用mysql)但是如何创建我尝试加入未知表的过程(取决于events.type字段)。

感谢。

0 个答案:

没有答案