Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как хранить список пользователей, пользователи хранятся в БД 
:(
    Опции темы
JVM
Дата 20.2.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 30.10.2006

Репутация: нет
Всего: 5



Есть база данных с табличкой пользоватлей. Надо в GUI вывести список пользователей отсортированный по ФИО. Далее будет нажиматься строка с пользователем и должна выводиться информация о пользователе.

Подскажите:
1. как хранить список пользователей полученных из базы? Насколько я понимаю надо хранить ФИО и ID(пользователя) в какой-нибудь коллекции?
2. нужно ли писать свои методы сортировки или есть что-то готовое?
PM MAIL   Вверх
tux
Дата 20.2.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Странные у тебя какие-то вопросы.

Цитата(JVM @  20.2.2007,  10:36 Найти цитируемый пост)
как хранить список пользователей полученных из базы? Насколько я понимаю надо хранить ФИО и ID(пользователя) в какой-нибудь коллекции?

Делаешь класс пользователя со всеми атрибутами и хранишь где хочешь, хоть в коллекции, хоть в Map каком-нибудь. Используя Map можно найти пользователя по идентификатору или имени.

Цитата(JVM @  20.2.2007,  10:36 Найти цитируемый пост)
нужно ли писать свои методы сортировки или есть что-то готовое? 

Есть конструкции 'select ... from ... order by ...' у любой СУБД. Сортировкой в Java будет медленнее.
PM MAIL Skype GTalk Jabber YIM   Вверх
JVM
Дата 20.2.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 30.10.2006

Репутация: нет
Всего: 5



Цитата(tux @  20.2.2007,  10:50 Найти цитируемый пост)
Странные у тебя какие-то вопросы.


Цитата(JVM @  20.2.2007,  10:36 )
как хранить список пользователей полученных из базы? Насколько я понимаю надо хранить ФИО и ID(пользователя) в какой-нибудь коллекции?


Делаешь класс пользователя со всеми атрибутами и хранишь где хочешь, хоть в коллекции, хоть в Map каком-нибудь. Используя Map можно найти пользователя по идентификатору или имени.

Странные потому что нет понимания как решить проблему.

Правильно ли я понял, что надо создать клас пользователя и хранить в объекте этого класса все данные о пользователе? Мне кажется, что на это будет тратиться много памяти и лучше хранить в объекте ID и ФИО(правда немного будет медленнее) и потом по ID получать остальную информацию о пользователе.
PM MAIL   Вверх
tux
Дата 20.2.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Цитата(JVM @  20.2.2007,  11:20 Найти цитируемый пост)
Правильно ли я понял, что надо создать клас пользователя и хранить в объекте этого класса все данные о пользователе? Мне кажется, что на это будет тратиться много памяти и лучше хранить в объекте ID и ФИО(правда немного будет медленнее) и потом по ID получать остальную информацию о пользователе. 

Можно и так. Если пользователей мало, то можно и все в памяти хранить. Все зависит от конкретной задачи, а у тебя здесь нет ее постановки. В первом посте ни слова о том, что есть еще что-то кроме идентификатора и имени. Кроме того, неизвестно сколько всего пользователей планируется. Если их 5 штук, то вообще СУБД использовать бессмысленно. Если пользователей планируется тысячи, то тогда конечно нужно будет учитывать, что под пользовательскую информацию будет уходить много памяти. 

В общем, продумай задачу, реши что же тебе от этих пользователей нужно и сколько их будет и исходя из этих посылок уже можно решить как будет организована система управления пользователями. 
PM MAIL Skype GTalk Jabber YIM   Вверх
JUncle
Дата 20.2.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(JVM @  20.2.2007,  11:20 Найти цитируемый пост)
Правильно ли я понял, что надо создать клас пользователя и хранить в объекте этого класса все данные о пользователе? Мне кажется, что на это будет тратиться много памяти и лучше хранить в объекте ID и ФИО(правда немного будет медленнее) и потом по ID получать остальную информацию о пользователе. 

Это конечно зависит от размеров выборки, но сдается мне, что такие множественные обращения ни к чему хорошему не приведут.
И вообще, все равно эта информация, выведенная на экран будет где-то (в куче естественно) храниться.  Вот компоненту JLabel, к примеру, абсолютно фиолетово, содержит ли он в себе единственную в этой JVM ссылку на String или делит ее с объектом класса User. Так что никакой экономии не выйдет. 
И, в зависимости от размеров выборки (если конечно, она не такая маленькая, как уже упоминал tux), ее следует забирать целиком, либо порциями, но никак не по одному.


Это сообщение отредактировал(а) JUncle - 20.2.2007, 21:06
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
hamsterKSU
Дата 20.2.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 1
Всего: 11



используй дял отабражения JTable, создай свою модель и работай напоямую сос своей колекцияей воторую ты выбрал из базы. я же не думаю что тебе надо будет выводить прям сразу всех 1000 или скольок там пользователей. но можно решить и такую проблему например читатьб из базы по страницам или по куску определенной длины.
PM MAIL ICQ   Вверх
JVM
Дата 21.2.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 30.10.2006

Репутация: нет
Всего: 5



Цитата(tux @  20.2.2007,  11:33 Найти цитируемый пост)
В общем, продумай задачу, реши что же тебе от этих пользователей нужно и сколько их будет и исходя из этих посылок уже можно решить как будет организована система управления пользователями.  

Вот тема с которой все началось http://forum.vingrad.ru/topic-134993.html в ней конкретная ссылка http://forum.vingrad.ru/index.php?showtopi...t&p=1021406 где Rodman  предлагает таблицы, которые надо использовать.

Возник еще вопрос.  В GUI для списка пользователей использую следующее
Код

        UsersListModel usersListModel = new UsersListModel();
        JList userslist = new JList(usersListModel);
...
...
    class UsersListModel extends AbstractListModel{
        private ArrayList users = new ArrayList();

И все бы было хорошо, если бы не присутствовал риск того, что ФИО пользователей могут повторяться, т.е. как я понимаю мне надо где-то хранить ID пользователей. Решение мне видется в следующем. Получая результат запроса(отсортированного как советовал tux) надо использовать тот факт, что списки имеют нумерацию своих элементов и заполнять private ArrayList users ФИО'ми, а ID пользователей сохранять в другом ArrayList IDList.  После выделения каког-то пользователя смотрим его номер в списки и далее по этому номеру ищем значение ID в IDList и используем его для получения данных о пользователе из БД. 
Или есть другой подход? Подскажите.

Цитата(JUncle @  20.2.2007,  21:06 Найти цитируемый пост)
Это конечно зависит от размеров выборки, но сдается мне, что такие множественные обращения ни к чему хорошему не приведут.
И вообще, все равно эта информация, выведенная на экран будет где-то (в куче естественно) храниться.

Пользователей у меня будет примерно 100. Каждый пользователь будет иметь некоторую информацю о себе: ФИО, IP, host-name, e-mail(возможно несколько), права и т.д. Тот кто будет использовать это GUI будет смотреть нескольких пользоваателей(думаю мах 5). И у меня возникает вопрос: зачем закачивать груду ненужной информации, которая разбросана по нескольким таблицам? Может лучше будет закачать ID пользователя и ФИО(которое нужно изначально)?


PM MAIL   Вверх
tux
Дата 21.2.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Цитата(JVM @  21.2.2007,  10:10 Найти цитируемый пост)
Получая результат запроса(отсортированного как советовал tux) надо использовать тот факт, что списки имеют нумерацию своих элементов и заполнять private ArrayList users ФИО'ми, а ID пользователей сохранять в другом ArrayList IDList. 

Зачем такие сложности? Берем Map и делаем тоже самое, только быстро:
Код

User user = new User();
Map users = new HashMap();
users.put(id, user);
User u = user.get(id);

Оттуда же можно получить и список ключей и список хранимых значений.
PM MAIL Skype GTalk Jabber YIM   Вверх
JVM
Дата 21.2.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 30.10.2006

Репутация: нет
Всего: 5



Цитата(tux @  21.2.2007,  10:22 Найти цитируемый пост)
Зачем такие сложности? Берем Map и делаем тоже самое, только быстро:


tux, но ведь этого пользователя(ФИО) надо будет добавлять в список, т.е. мне наду будет создавать ArrayList users? Т.е. мне не понятно, как после добавления пользователя в список искать его ID?
PM MAIL   Вверх
tux
Дата 21.2.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Код

Set ids = users.keySet(); // список идентификаторов
Set us = users.entrySet(); // список объектов пользователей
User user = users.get(id); // получаем пользователя по его идентификатору

Или я чего-то не понимаю?
PM MAIL Skype GTalk Jabber YIM   Вверх
JVM
Дата 21.2.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 30.10.2006

Репутация: нет
Всего: 5



tux,  smile дошло!!! Просто я не понимал как можно добавлять в список объекты - надо просто переопределить метод toString().
Спасибо!!!
PM MAIL   Вверх
tux
Дата 21.2.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Цитата(JVM @  21.2.2007,  16:02 Найти цитируемый пост)
Просто я не понимал как можно добавлять в список объекты - надо просто переопределить метод toString().

Не понял зачем его переопределять. Ну дошло, так дошло.
PM MAIL Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.