2010-11-25 2 views
2

У меня есть умная программа, в которой задан файл, содержащий очень конкретные метаданные базы данных, для меня в eclipse создается весь проект. Он использует hibernate для доступа к базе данных и предоставляет базовые функции crud, а также предоставляет интерфейс xhtml.Проблема проектирования с Seam

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

Я мог бы просто изменить проект и никогда не оглядываться назад, но я бы потерял огромное преимущество, чтобы регенерировать проект, чтобы добавить новые таблицы и поведения. Хотя я мог бы сгенерировать новый проект с моими изменениями и применить эти изменения вручную, я бы предпочел не делать этого для каждого изменения, которое мне нужно сделать.

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

Я заметил, что он сильно использует структуру Seam для создания созданных классов (используя @In(create = true)). Есть ли способ продлить сгенерированный класс таким образом, чтобы регенерация существующих классов не переопределяла мои изменения, но вместо этого были созданы эти расширенные классы?

Есть ли какая-то стратегия, которую я могу использовать, чтобы свести к минимуму модификацию сгенерированных классов (идеальным вариантом было бы изменение поведения просто путем добавления файлов в проект, хотя я понимаю, что это невозможно для файлов xhtml)? Любая помощь будет оценена, хотя я понимаю, что некоторые изменения должны быть внесены в инструмент до того, как это станет возможным (например, завод?).

+0

Звучит очень похоже на шов. Это то, что вы используете? – 2010-11-27 15:48:12

+0

Вполне возможно, хотя я не могу сказать точно. Просто прошел крутой курс несколько дней назад, и я до сих пор не хватает подробностей о том, как это работает. – Neil 2010-11-30 11:11:00

ответ

1

Это звучит для меня как шов-ген. Это может вам помочь: http://seamframework.org/Community/ModifyingSeamgen

Мне не нравится шов. Это инструмент быстрого доступа с ценой. См. Это сообщение http://shervinasgari.blogspot.com/2010/10/why-you-should-not-use-seam-application.html

Я люблю Шом, но я не использую/как шов-ген. seam-gen не подходит для приложений реального мира.

Помимо этого:

@In(create=true) BeanClass beanName 

впрыскивает компонент с именем "beanName" и введите BeanClass, из некоторого контекста. Если этот компонент еще не существует, он будет создан (потому что create = true). Если он существует в определенном контексте (страница, запрос, сеанс, приложение, рабочий процесс и т. Д.), Он будет найден, и он будет введен в свойство beanName.