Я только использую методы считывания/методы set, когда нет никакой альтернативы. Когда я могу, я использовать этот шаблон (не в том смысле, что это - хорошая практика, а в том смысле, что я последовательно делаю это): Изменение свойства не влияет на поведение объекта, пока оно не действительно необходимо. Например:
myWnd->Title = "hello"; // not a setter, just a LPCSTR member
myWnd->Title = "world";
myWnd->ShowWindow(); // perhaps updates a WNDCLASS structure
// and other complicated things that
// the user of the class doesn't want to know
я знаю, что это означает, что я должен буду записать некоторые изобретенные закрытые методы обновить внутренние состояния объектов, но если то усилие необходимо для сокрытия сложности пользователю класса, я должен буду сделать его.
Нет, нет возможности сделать это прямо из коробки. Раньше я использовал следующий - довольно сложный - подход:
@TableSpec
, которая имеет табличное пространство и другие необходимые атрибуты. org .hibernate.cfg.Configuration
и переопределите getTableMappings ()
, чтобы вернуть декорированные объекты Table
(см. ниже). org.hibernate.mapping.Table
и переопределите sqlCreateString ()
и / или sqlAlterStrings ()
, чтобы добавить спецификацию табличного пространства (и дополнительные настройки, если таковые имеются). Configuration
, обрабатывать все ваши файлы классов, собирая и интерпретируя аннотации @TableSpec
, и вызывать Configuration.generateSchemaCreationScript ()
или generateSchemaUpdateScript ()
для генерации фактического DDL. As Я сказал, довольно сложно :-) В качестве альтернативы, если ВСЕ ваши сопоставленные таблицы используют одно и то же табличное пространство, вы можете расширить диалект Oracle, который вы используете, и переопределить getTableTypeString ()
, чтобы вернуть спецификацию табличного пространства. Хотя это уродливый прием (поскольку исходная цель tableTypeString - предоставить тип движка MySQL), он работает и, безусловно, намного быстрее и проще, чем описанный выше подход.
generateSchemaUpdateScript ()
для генерации фактического DDL.
Как я уже сказал, довольно сложно :-) В качестве альтернативы, если ВСЕ ваши сопоставленные таблицы используют одно и то же табличное пространство, вы можете расширить Диалект Oracle, который вы используете, и переопределите getTableTypeString ()
, чтобы вернуть спецификацию табличного пространства. Хотя это уродливый прием (поскольку исходная цель tableTypeString - предоставить тип движка MySQL), он работает и, безусловно, намного быстрее и проще, чем описанный выше подход.
getTableTypeString ()
, чтобы вернуть спецификацию табличного пространства. Хотя это уродливый прием (поскольку исходная цель tableTypeString - предоставить тип движка MySQL), он работает и, безусловно, намного быстрее и проще, чем описанный выше подход.