сохранение / загрузка общего типа Java в столбец базы данных postgresql - PullRequest
2 голосов
/ 10 мая 2011

Я пытаюсь реализовать некоторые простые функции аудита для моего Java-приложения. Вот фрагмент моего класса аудита:

public class Audit<C, T> {
    public final Class<C> modifiedClass;
    public final Date modificationTime;
    public final MyFieldMeta<C, T> fieldMeta; //contains Class<T>
    public final T newValue;

    //constructor, etc...
}

Когда речь идет о сохранении этих объектов аудита, я бы предпочел иметь только одну таблицу, в которой хранятся все разновидности, независимо от того, чем является T. Я использую postresql, и мне интересно, как лучше всего сохранить newValue в столбце, а затем вернуть его снова.

newValue ограничен довольно простыми типами, которые имеют эквиваленты postgresql - String, Integer, Date и т. Д. Таким образом, сохраняя значение как text и тип как varchar в отдельном столбце, тогда сопоставить их обратно в Java не будет слишком сложно. Есть ли подход к пижаму?

1 Ответ

1 голос
/ 10 мая 2011

Как только вы «сгладите» типы данных в вашей базе данных, вы будете полагаться на логику, чтобы преобразовать ее обратно, что может вызвать проблемы. Рассмотрим значение: 11.12

Это текст 11.12, как в номерах глав? Это 11.12 как в денежном выражении? Это 11 декабря?

Если вы не можете гарантировать, что значение всегда может быть четко сопоставлено с типом, единственный способ обойти это - добавить в поле дополнительный маркер типа, который затем необходимо проанализировать, например: s11.12 в означает «Строка значения 11.12».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...