Эта дата в зулусском времени (обратите внимание на «Z» в конце):
ISODate("2018-10-10T00:00:00Z")
Когда вы делаете это, в частности, вызов .toString()
, вы конвертируете дату в местное строка даты в вашем часовом поясе, которая выглядит как Zulu + 2:
LOG.info(ref.getExpiresAt().toString());
Я обычно устанавливаю часовой пояс моего сервера в UTC / Zulu / GMT, чтобы избежать любых автоматических преобразований часовых поясов, подобных этому.
DdlUtils имеет то, что вы ищете. Вы можете читать / записывать схемы в / из XML (в формате Torque) или в действующую базу данных или даже определять схему базы данных на чистом Java. А еще лучше почитайте онлайн-документацию, она неплохая.
Сам JDBC имеет такую абстракцию. Взгляд java.sql. DatabaseMetaData. Однако это - дополнительная часть стандарта, и он зависит от драйвера JDBC, который Вы используете, реализован ли он или нет.
Я не использовал его в течение многих лет, но В спящем режиме используемый, чтобы иметь инструменты для управления моделями данных во время изготовления. Будьте в спящем режиме также имеет диалекты понятия, которые были бы полезны, если Вы нацелены больше чем на одного поставщика базы данных.
Когда я был в MetaMatrix, мы создали такую вещь с помощью EMF (Платформа Моделирования Eclipse), где мы создали представительную метамодель в UML, затем генерировали его из кода. Хорошая вещь о метамоделировании состоит в том, что, если Вы делаете это хорошо, можно взаимодействовать вещи через метамодели, если Вы сделали хороший выбор против метаметамодели.
У нас также было средство импорта, которое импортирует метаданные из API JDBC и создаст соответствующие эквивалентные объекты модели (база данных, таблица, столбец, ключи, и т.д.).
Этот код мог бы быть открытым исходным кодом однажды, так как они были куплены JBoss, но я не думаю, что это все же.