Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Как выбрать правильную архитектуру?


Автор: kaa 30.5.2009, 12:21
Собираюсь тут наваять приложение простенькое, на связке Wicket+Spring+Hibernate

В общем уже подошёл к работе с БД и пользователями и встрял:
Есть пользователи и роли, но изначально в системе нет ни одного пользователя - сразу после развёртывания БД-то у нас пустая.

Как тут правильно поступать:

1. Перед равертыванием создают все необходимые таблицы в БД с минимальным необходимым, для нормальной работы, 
    набором данных или как-то инициализируют таблицы в процессе развёртывания?
    Если да, то я что-то ненагуглил  тулов, которые показывают как должна выглядеть таблица с точки зрения Hibernate
    в соответствии с hbm файлом...

2. Таблицы создаются уже в процессе регистрации (а значит и сохранения) первого пользователя?
     В этом случае роли должны быть представленны классами  - если честно неохото хардкодить роли.

3. 50/50 - какие-то таблицы создавать отдельным скриптом (например роли), а какие-то в процессе работы 
    (регистрация нового пользователя с ролью созданной из БД)?

Буду благодарен если подскажите где все эти ньюансы проектирования можно почитать-посмотреть.


P.S.: не ошибся ли я разделом... smile

Автор: Samotnik 30.5.2009, 12:49
ну как же
когда создаешь в SQL   БД, то сразу создай таблицу USERS  и ROLES создай в них поля и
пропиши 2-х основных юзеров  
 - root  
- user

и соответствующие им роли
А затем уже когда приложение будет работать, там будеш походу создавать  Vasja, Petja, Kolja  и сетить им роли  smile 

Автор: kaa 30.5.2009, 13:23
Samotnik, 
Спасибо!

Автор: garbuz 31.5.2009, 01:39
kaa, вот замечательный скрипт, который однажды предложил ivq, естественно что в эти таблицы можно еще чего добавить. Для MySql
Код

CREATE TABLE `roles` (
  `role_id` int(10) NOT NULL auto_increment,
  `role_name` varchar(50) NOT NULL,
  PRIMARY KEY  (`role_id`),
  UNIQUE KEY (`role_name`)
)TYPE=InnoDB;

CREATE TABLE `users` (
  `user_id` int(10) NOT NULL auto_increment,
  `user_name` varchar(50) NOT NULL,
  `user_pass` varchar(50) NOT NULL,
  PRIMARY KEY  (`user_id`),
  UNIQUE KEY (`user_name`)
)TYPE=InnoDB;

CREATE TABLE `users_roles` (
  `user_id` int(10) NOT NULL,
  `role_id` int(10) NOT NULL,
  foreign key (`role_id`) references roles(`role_id`)
    on delete cascade on update cascade,
  foreign key (`user_id`) references users(`user_id`)
    on delete cascade on update cascade
)TYPE=InnoDB;

CREATE VIEW `roles_view` AS
select `users`.`user_name`,
       `roles`.`role_name`
  from `users`, `roles`, `users_roles`
 where `users_roles`.`role_id` = `roles`.`role_id`
   and `users_roles`.`user_id` = `users`.`user_id`;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)