2012-05-28 4 views
0

Я хочу представить некоторые концепции Java в схеме базы данных. Я не имею в виду постоянные экземпляры в Hibernate, я имею в виду, что система типа java представляет собой серию таблиц и строк.Сопоставление языка Java с базой данных

Так, например, по отношению к типам существует определенный определенный набор отношений, которые я хотел бы представлять. Например, в Java существуют два типа: примитивные типы и ссылочные типы, а примитивные типы разбиваются на числовые и логические и числовые разрывы на интегральные и плавающие типы, а интегральные разрывы сокращаются до байтов short int long и генерируются символы char и float в float и double (я думаю, что получил это право).

Java также имеет классы и классы, методы и методы которых имеют подписи и конструкторы, а также возвращаемые типы и аргументы, оба из которых имеют некоторый тип.

Так что я хочу создать базу данных, представляющую этот вид информации в форме 3NF. Такая база данных позволит запрашивать экземпляры объектов, которые будут представлять данные в базу данных.

Есть ли что-нибудь подобное? Я не могу придумать ничего полезного в Google, потому что сложно составить запрос, который не приземлится на территории JDBC и Hibernate. Тем не менее, я думаю, что кто-то, должно быть, уже сделал это; может быть, есть даже стандарт или RFC, о которых я не знаю.

То, что я не хочу, - это попытаться изменить некоторые аспекты чего-то вроде спящего режима или чего-то подобного. Я думаю, что на самом деле это была бы довольно большая задача с очень небольшим выигрышем. Дело не в том, что я не могу сделать это с нуля (после того, как были сделаны обычные ложные запуски и ошибки), это то, что мне интересно, если это еще не сделано и не было где-то там.

Большое спасибо.

ответ

0

Это то, что мне интересно, если это еще не сделано и не было где-то там.

Не в том смысле, что вы имеете в виду. Это колесо было изобретено ранее в различных продуктах картографирования ORM, но я не знаю никого, кто сделал это независимо от такого продукта. (Почему кто-то мотивирован на это? Его не так, как есть 100 проектов, которые использовали бы эту работу ...)

+0

Я заинтересован в том, чтобы запрашивать кодовые базы как таковые. –

2

Object-Relational Impedance Mismatch - сложная проблема. Если вы не хотите погружаться в Hibernate или другой уровень ORM, чтобы попытаться выяснить, как они это сделали, вам придется изобретать колесо самостоятельно.

Мы можем придумать концептуальные представления, такие как таблица объектов ... и вы можете использовать стратегию наследования, например, использование Hibernate. Но если вы хотите захватить методы, вам придется это выяснить (отношение Method-Object?). Если вы хотите захватить возможность @Override, вам придется это выяснить. Аннотации? Etc и т.д.

«Я хочу, чтобы представить некоторые концепции Java в базе данных схемы ... которые я думаю, будет фактически большая задача с небольшим выигрышем.»

Я думаю, вы ответили на свой вопрос. Вопрос, который вы можете задать, это: «Есть ли лучший подход к тому, что я действительно пытаюсь сделать?»

+0

Я не думаю, что импеданс ОРМ здесь имеет значение, поскольку он хочет, по сути, хранилище метаданных. Основная проблема заключается в моделировании иерархической структуры с использованием реляционной технологии. –

+0

Он использует типы в качестве примера «например», но более подробно описывает понятия Java. «Такая база данных позволяла бы запрашивать экземпляры объектов, которые были бы данными, помещенными в базу данных». звучит как сериализация LINQ для РСУБД. В этом случае есть сопоставление, тип данных и другие подобные проблемы, возникающие из-за несоответствия импеданса. –

+0

James Anderson- хорошая работа. Да, это именно так. Я пытался уклониться от интерпретации ORM моего вопроса, но, увы! –

0

Google для «подтипа» «супертипного» моделирования.

Ваша проблема звучит так, как будто она требует буксировки или трех уровней подтипа.

таблицы под названием «поле», который имеет атрибуты, общие для всех типов имени, длина, класс принадлежит и т.д.

таблицы под названием «text_fields», который имеет атрибуты, общие для всех полого типа текста.

Таблица, называемая «числовые поля», которая содержит все атрибуты, общие для числовых полей. Индикатор для плавающих или фиксированных, возможно максимальных и минимальных значений и т. Д.

Таким образом, для каждого поля вы сохраняете имя и т. Д. В виде строки в таблице «поля» и остальных данных в «текстовых полях» или Таблица "numeric_fields".

В зависимости от того, почему вы моделируете это, может потребоваться четвертая таблица «классы» как переменная класса, которая может появляться в большинстве мест, где базовый тип может появляться в программе Java.

+0

Пример, который я дал, использовал числовые типы, но я просто пытался сделать вопрос максимально ясным, предоставив подмножество проблемы, которую я пытаюсь чтобы решить. Я после всей системы типа Java, включая классы интерфейсов переходов ... null .. супер классы классы внутреннего класса видимости модифицируют все, но вы правильно поняли вопрос. Мне трудно поверить, что это не Возможно, я открою исходные данные, если я первый. Я нахожусь в лучшем форуме, чтобы задать этот вопрос? –

+0

@John - модель по-прежнему работает, вам просто нужно больше «подтипов». для хранения всего в XML-документе. С хорошей схемой это будет масштабироваться примерно до 1 ГБ данных. XML, естественно, является иерархическим и может более легко отражать систему типов Java. –

+0

Я хочу запросить y объекты в стиле databse. XML не позволял мне это делать, если я не использовал XML-базу данных, которая не является вариантом (по другим причинам). –

0

Другой ответ! Я думал об этом всю ночь, и мне показалось, что любой инструмент моделирования UML должен хранить именно такие данные внутри, чтобы поддерживать красивую графику и стрелки.

[Argo][1] and [Papyrus][2] look promising. 
+0

Возможно. Вещь с базой данных - информация запрашивается. Это один из способов сделать UML-инструмент, но не единственный способ, поскольку инструменты UML, как правило, также не предоставляют службы запросов, это не требуется. –

Смежные вопросы