powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по ORM
25 сообщений из 59, страница 1 из 3
Вопрос по ORM
    #39184575
denis111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
в меня вопрос по MyBatis, Hibernate, EclipseLink
Когда мы далем SELECT * FROM users, то нам возвращант List<Users> users.

Вопрос такой:
Делают указание выше ORM перед основным запросом COUNT(*) запрос, чтоб узнать размер будушего List?
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184655
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111,

если я правильно понял вопрос, то
делают отдельным запросом
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184718
denis111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xifr,
Я когда создаю List<MyObject> l = new ArrayList<>(1234)
Стараюсь всегда указывать размер списка чтоб не пересоздавать потом список
Так же из запросами SELECT нужно зать размер списка на перед
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184720
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете просто users.size();
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184723
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Я когда создаю List<MyObject> l = new ArrayList<>(1234)
Стараюсь всегда указывать размер списка чтоб не пересоздавать потом список
Так же из запросами SELECT нужно зать размер списка на перед
Я когда читаю такие комментарии, стараюсь не плакать.

1234 это не размер списка, а capacity, актуальный только для реализации в виде ArrayList
Hibernate использует свои собственные коллекции, так как в них куча функциональности ещё навернуто.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184744
denis111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Ну вот, это я и хочу узнать

Бо иногда я работаю из чистым JBDC

И делаю примерно так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  public List<ProDbRow> findProDbRows() {
        String query = "SELECT * FROM table";
        List<ProDbRow> result = new ArrayList<>(findCountProDbRows());
             // filing PraparedStatemens
        // get data from ResultSet and fill result list
        return null;
    }

    public int findCountProDbRows() {
        String query = "SELECT COUNT(*) FROM table";
             //...
        //...
        return 343434;
    }

 
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184749
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж...
IMHO в большинстве СУБД count(*) будет выполняться значительно дольше, чем коллекция себя 100500 раз перересайзит.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184758
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Blazkowicz,

Ну вот, это я и хочу узнать

Бо иногда я работаю из чистым JBDC

И делаю примерно так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  public List<ProDbRow> findProDbRows() {
        String query = "SELECT * FROM table";
        List<ProDbRow> result = new ArrayList<>(findCountProDbRows());
             // filing PraparedStatemens
        // get data from ResultSet and fill result list
        return null;
    }

    public int findCountProDbRows() {
        String query = "SELECT COUNT(*) FROM table";
             //...
        //...
        return 343434;
    }

 



и это все для получения количество строк?
а что мешает Вам использовать тот же size();
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184770
denis111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

Понял что нужно пересмотреть Java Collection))


Ну пересоздавать много раз ArrayList мне определенно не нравиться все таки

Может кто-то знает хорошый подход в заполнении коллекций когда делаем SELECT?
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184773
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Бо иногда я работаю из чистым JBDC
И делаю примерно так:

Денис, вы делаете мне больно.
Что именно вы пытаетесь таким образом сэкономить? CPU? IO? Память? Нет ни одного параметра по которому бы SQL запрос выиграл бы у нескольких десятков копирований массива в памяти.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184780
denis111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Музаффар,


Стартовой размер ArrayList 10

Если виборка 234 рядка то масив в ArrayList много раз будет создаватся заново.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184785
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Понял что нужно пересмотреть Java Collection))

И доклады Шипилёва и Куксенко.

denis111111Ну пересоздавать много раз ArrayList мне определенно не нравиться все таки

Ну, если мы в данном конкретном месте знаем примерный размер ожидаемых коллекций, то можно впендюрить некую средне минимальную capacity.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184787
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Если виборка 234 рядка то масив в ArrayList много раз будет создаватся заново.
Тебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184793
denis111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczdenis111111Бо иногда я работаю из чистым JBDC
И делаю примерно так:

Денис, вы делаете мне больно.
Что именно вы пытаетесь таким образом сэкономить? CPU? IO? Память? Нет ни одного параметра по которому бы SQL запрос выиграл бы у нескольких десятков копирований массива в памяти.

Насколько я понял, вы говорите что нет смысла делать дополнительной COUNT чтоб узнать размер ArrayList?

Мой подход определенно не лучший (может нужно использывать другие реализации списка), но мне кажется нужно всегда задавать розмер ArrayList.

Как делаете вы?
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184805
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111но мне кажется нужно всегда задавать розмер ArrayList.
денис, ты не пьян случайно? что значит "тебе кажется"? массивы со списками не путаешь, нет?
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184813
denis111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpasha,
Внутри ArrayList есть Object[]
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184815
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111,
а о каком количестве записей идёт речь? и каком размере данных в котором призводится подстчёт count?
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184816
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

спасибо, поржал...
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184831
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczdenis111111Если виборка 234 рядка то масив в ArrayList много раз будет создаватся заново.
Тебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает.
ну если вести аналогию со сбором строки - то тормозить буде шикарно.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184832
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Насколько я понял, вы говорите что нет смысла делать дополнительной COUNT чтоб узнать размер ArrayList?

Я говорю что SQL запрос это ну ооочень ресурсозатратно по сравнению с созданием десятка-другого копий массива.

denis111111Мой подход определенно не лучший

Скажем так, откровенно плохой. Ответь хотя бы на простой вопрос. Сколько времени у тебя занимает выполнение этого SQL запроса из Java.

denis111111(может нужно использывать другие реализации списка)

Не нужно. Операции с массивами реализованы на уровне CPU, поэтому ArrayList даёт фору всем остальным коллекциям.

denis111111, но мне кажется нужно всегда задавать розмер ArrayList.

Это не "розмер". Это "вместимость".

denis111111Как делаете вы?
Не занимаюсь превентивными оптимизациями.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184834
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяBlazkowiczпропущено...

Тебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает.
ну если вести аналогию со сбором строки - то тормозить буде шикарно.
Ну, можно ещё аналогию с копированием файла на жестком диске провести. И массу других аналогий. Толку от них?
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184835
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Leonid Kudryavtsev,
Понял что нужно пересмотреть Java Collection))
Ну пересоздавать много раз ArrayList мне определенно не нравиться все таки
Может кто-то знает хорошый подход в заполнении коллекций когда делаем SELECT?

1) В общем случае, когда вы делаете select * в БД, то в момент его выполнения и даже в процессе выгрузки вам данных,
БД может не знает конечный размер данных, его размер будет известен только после окончания выгрузке (это на стороне БД)
И на клиенте, вы точно ни как это не сделаете (одним запросом)

2) Как я помню в JPA когда получаешь колекцию никакой ArrayList заранее инициализировать не надо, он возврощается по факту,
и возвращается List (не факт что это будет ArrayList )

3) Если вы делаете через jdbc, то на заморачиватся с размерами ArrayList самое бесполезное занятие.
Как аргумент, можете посмотреть сорцы Hibernate, где вытаскиваются коллекции.
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184837
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111chpasha,
Внутри ArrayList есть Object[]
ладно. давай по-другому: в какой книжке или в каком месте ты прочитал, что в списках нужно всегда задавать размер явно?
и еще: какая ошибка происходит, когда ты не задаешь размер? у тебя программа начинает тормозить?
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184839
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis111111Внутри ArrayList есть Object[]
И что? )))

BlazkowiczТебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает.
+

МассивоСписок, это почти как КотаПес
...
Рейтинг: 0 / 0
Вопрос по ORM
    #39184851
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaв какой книжке или в каком месте ты прочитал, что в списках нужно всегда задавать размер явно?
denis111111 но мне кажется нужно всегда задавать розмер ArrayList.
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по ORM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]