2012-06-03 3 views
1

Я закодировал веб-сайт с использованием Spring MVC, и теперь я хочу запрограммировать его конец (например, панель мониторинга или CMS), чтобы администраторы могли ее управлять.Повторное использование DAO в другом веб-приложении

Поскольку я кодировал все DAO для интерфейса, я хотел бы повторно использовать их для задней части (поскольку таблицы DB, очевидно, одинаковы, передняя и задняя части имеют один и тот же контекст сохранения).

Моя идея состояла в том, чтобы закодировать задний конец как новое веб-приложение, в котором объекты DAO и домена были экспортированы с передней стороны в виде файла jar и импортированы в проект задней части. Постоянство управляется JPA и Hibernate и каждый класс DAO выглядит следующим образом:

@Repository 
public class UserDao { 
    private EntityManager em; 

    // ... Methods... 

    @PersistenceContext 
    void setEntityManager(EntityManager entityManager) { 
     this.em = entityManager; 
    } 
} 

конфигурация живучесть (т.е. JPA + Hibernate + MySQL) от заднего конца сайта точно так же, как и для переднего конца , Я ожидал, что эта конфигурация будет введена в DAO, которые импортируются в JAR-файл, но это, очевидно, не происходит. Everytime я пытаюсь использовать любого из методов в любом из DAO, я получаю исключение, подобное:

org.hibernate.hql.ast.QuerySyntaxException: UserJpa не отображается [SELECT FROM U UserJpa ˙U где и. alias =: alias AND u.closed = false]

Есть ли решение этой проблемы? Или есть лучший подход к тому, что я хочу достичь (т. Е. Кодовому концу, используя те же DAO переднего конца)?

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

ответ

3

Мне интересно, почему вы не можете развернуть оба пользовательских интерфейса как одно приложение, с доступом на основе роли для пользователей и администраторов. Поскольку вы уже используете Spring, Spring Security была бы естественным выбором для ограничения доступа к страницам администратора по ролям. Зачем переписывать задний конец?

+2

Благодарим вас за ответ, @duffymo. Хорошо, я начал с этого делать. Я уже использую Spring Security для интерфейса, поскольку большая часть веб-сайта предназначена только для зарегистрированных пользователей. Но тогда я не знал, как правильно настроить Spring Security. Например, если я не вошел в систему, example.com/dashboard/manage-users следует перенаправить на example.com/dashboard/login. Пока example.com/my-profile должен перенаправить на example.com/login (или example.com/registration). Как я могу это сделать..?Благодаря! – satoshi

+0

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

0

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

о Spring Security я рекомендую использовать уникальную страницу входа в систему, но другая домашняя страница, я думаю, что вы можете установить различные домашнюю страницу, ROL

0

UserJpa не отображается [SELECT U FROM UserJpa ˙U WHERE u.alias =: псевдоним И u.closed = ложь]

Это звучит, как вы» просто забыл десять, чтобы включить конфигурацию отображения из первого приложения во втором. Убедитесь, что время выполнения JPA во втором приложении имеет одинаковую конфигурацию в отношении класса UserJpa.

0

Выполняете ли вы или сопоставление с использованием аннотаций Hibernate или конфигурации XML? В первом случае свойство packagesToScan на вашем Hibernate SessionFactory не видит класс UserJpa, возможно, потому, что вы не загружаете JAR, который, как вы думаете, загружается. В последнем случае вам не хватает импорта hibernate.cfg.xml или его эквивалента.

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