|
|
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Не кидать тапками. Я создавал тему подобную уже. Но не хочется писать там ибо много сообщений. Я постараюсь описать все от а до я что бы не было кучи лишних вопросов и прочего, одним словом срача. Итак. Я не использую никакие фреймворки, ОРМ и прочее - все пишется ручками (используются либы). Почему так? Поясняю - Проект начинал писаться без этого всего и сейчас, когда он уже почти готов и в нем просто дофига функционала, переписывать никто не будет ибо а) нет на это времени и б) нет средств. По сему, пожалуйста, не надо про это писать. Я знаю как сейчас делается, но причину по которой переделываться не будет я озвучил. Есть класс DataSource (Синглтон). Предоставляется библиотекой Commons dbcp2. Служит для пула подключений (при старте приложения создаётся 10 подключений к бд и хранятся в BasicDataSource). Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. Далее. Есть классы в которых прописаны запросы к бд. Это не синглтоны. Их всего 3: DataBaseUser(Запрос которые отвечают за пользователя), DataBaseAdmin(Запросы которые относятся к внутреннему функционалу проекта), DataBaseChat (Запросы которые относятся к чату) Я специально разделил эти запросы: Все запросы относятся только к той области где они применяются. К примеру DataBaseChat обслуживает чат. Код DataBaseAdmin: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Остальные два класса похожи конструктором и полем - все остальное разное. Тут прописаны все запросы. В каждой выборке могут быть своя обработка результата. Запросы бывают 3 типов: QUERY, INSERT, UPDATE. Сами запросы я делаю при помощи библиотеки Commons DbUtils - QuerryRunner. Ему передаётся BasicDataSource из которого достаётся Connection. Использование этих классов: Код: java 1. 2. 3. 4. Где мне нужно обратиться к базе я создаю экземпляры классов у которых есть методы. Вызываю нужные методы. После окончания работы с бд я выполняю возврат подключения в пул: Код: java 1. Вот такая вот система. Знаю не очень удобно и красиво. Теперь вопрос. Как можно это все сжать или скомпоновать что бы имея один класс получать доступ ко всем методам классов. Приведу пример использования: Код: java 1. 2. 3. 4. 5. Пример самого класса DataBase: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Может есть более элегантный вариант? Спасибо за внимание! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2018, 22:58 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklop, что ты делаешь с json, которые тебе возвращают твои запросы? кто формирует запросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 00:16 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
вадяTsyklop, что ты делаешь с json, которые тебе возвращают твои запросы? кто формирует запросы? JSON перегоняю в объект посредством Gson . Знаю может это не совсем ахти. но пока что так. Пытался сделать аля ОРМ. Формирует их QuerryRunner - по сути он делает PrepareStatment, подставляет переданные параметры в знаки ? в строке запроса. Ну а ResultSetHandler служит для обработки результата запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 00:34 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklop, конечная цель полученных данных? отправка клиентк? объект это что? зачем столько преобразований? запрос на получении откудп приходит? от клиента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 03:08 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklop, Никакого смысла в объединении класса по работе с чатом с классом Users нету. И ты так членораздельно и не объяснил зачем это нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 08:49 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopJSON перегоняю в объект посредством Gson я бы сразу делал из результсета объект (хотя надо знать что это за объект и для чего он нужен, может это шаг пропустить) и почему не сделать так три класса Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. а в синглтоне dataSource... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 09:55 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
вадяTsyklop, конечная цель полученных данных? отправка клиентк? объект это что? зачем столько преобразований? запрос на получении откудп приходит? от клиента? Не только. Смотря какой запрос приходит то и делается. Нужен объект для работы с ним вот и вытягиваю. Не обязательно он отдаётся клиенту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:09 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
вадя, За меня это все делает QuerryRunner в каждом по сути запросе. Можно как-то сделать с QuerryRunner, что бы как-то обобщить все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:11 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123И ты так членораздельно и не объяснил зачем это нужно а говорил, что живешь давно ;) понятно зачем - хочется создавать один объект вместо трех, иметь один "супер" класс. ТС - зачем создавать еще одну тему о том же самом? ты думаешь набегут другие, которые тебе что-то присоветуют? не набегут - тут только мы. А если бы набежали, то начали советовать все тоже самое, на 5ти страницах. Можно сделать только либо так, как ты уже написал, либо скинуть все обратно в один файл. Какой магии ты еще в этом месте ожидаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:12 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
chpashaТС - зачем создавать еще одну тему о том же самом? ты думаешь набегут другие, которые тебе что-то присоветуют? не набегут - тут только мы. А если бы набежали, то начали советовать все тоже самое, на 5ти страницах. Можно сделать только либо так, как ты уже написал, либо скинуть все обратно в один файл. Какой магии ты еще в этом месте ожидаешь? первый пост читали? я объяснил почему я создал новую тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:13 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopпервый пост читали? я объяснил почему я создал новую тему я обычно читаю и даже иногда понимаю написанное. Объяснение - курам насмех, тема - исчерпана. Если собираешься продолжать в подобном ключе, будешь очень быстро послан нахер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:21 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
chpashaМожно сделать только либо так, как ты уже написал, либо скинуть все обратно в один файл +1)) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. chpashaпонятно зачем - хочется создавать один объект вместо трех, иметь один "супер" класс. я бы понял, если бы он до этого не разделил всё на 3 класса)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:23 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
chpashaОбъяснение - курам насмех, тема - исчерпана. Если собираешься продолжать в подобном ключе, будешь очень быстро послан нахер +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:23 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopпервый пост читали? я объяснил почему я создал новую тему. Но понятнее, ведь, не стало. Конструкторы не нужны. Нужны синглтоны и Dependency Injection. Смотрите вот ваш код: Код: java 1. 2. 3. 4. 5. Код нарушает SRP, потому что в нем инфраструктура смешана с бизнес-логикой. Инфраструктура Код: java 1. 2. 3. Её не должно быть в каждом методе где вы пытаетесь использова DbUser или другой аналогичный класс. Бизнес-логика: Код: java 1. Чтобы ваш код превратить в чистую бизнес-логику, нужно инфраструктуру вынести в общий код. Например это можнo реализовать через Proxy. Или паттерн Template method. Лучше через Proxy чтобы было меньше шума. С другой стороны прокси у вас нужен только чтобы закрывать Connection. Так как вместо создания DataBase на каждый пук имеет смысл перейти на скиглтоны и инъкцию их экземпляров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:26 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123я бы понял, если бы он до этого не разделил всё на 3 класса он их разделил ровно по одной причине - стало много методов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:26 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopЗа меня это все делает QuerryRunner в каждом по сути запросе.он делает не всё, непонятно, что... оставляя тебе проблему с закрытием конекта. у тебя куча классов/методов.... я предлагаю только оставить 3. в которых методы будут возвращать конечный нужный объект. избавишься от медленного преобразования в json, и от преобразования json в объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:27 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopГде мне нужно обратиться к базе я создаю экземпляры классов у которых есть методы. Вызываю нужные методы. После окончания работы с бд я выполняю возврат подключения в пул: Код: java 1. Вот это вообще жуть. В приложении, сложнее Hello world вероятность того, что потекут коннекшены близка к 100%. Connection - от autocloseable - сделай хотя бы через try with resources, или делай все обращения через helper, который принимает лямбду, в которую передается connection, а все манипуляции с connection выполнять в helper'е. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:27 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а с чего вы взяли что это я использую везде? и с чего вы взяли что создаётся новое подключение? я как бы описал откуда берется подключение и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:28 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
вадяон делает не всё, непонятно, что... оставляя тебе проблему с закрытием конекта. у тебя куча классов/методов.... я предлагаю только оставить 3. в которых методы будут возвращать конечный нужный объект. избавишься от медленного преобразования в json, и от преобразования json в объект. почему же не понятно. он делает по сути то же Вы и пишете а мне отдаёт ResultSet, а я прохожусь в цикле по каждому найденному элементу и записываю в коллекцию. все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:31 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
[quot Локшин Марк Вот это вообще жуть. В приложении, сложнее Hello world вероятность того, что потекут коннекшены близка к 100%. Connection - от autocloseable - сделай хотя бы через try with resources, или делай все обращения через helper, который принимает лямбду, в которую передается connection, а все манипуляции с connection выполнять в helper'е.[/quot] я написал что это возврат конекшена в пул, а не его закрытие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:31 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:33 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
chpashaPetro123я бы понял, если бы он до этого не разделил всё на 3 класса он их разделил ровно по одной причине - стало много методов :) ну и я бы разделил если он не врёт, и это 3 разные подсистемы. По крупному. Обратное объединение нелогично). Не будет ни сущностей, ни классов, ни подсистем. Если только так: Код: java 1. но выгода сомнительна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:35 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklop, а с чего вы взяли что это я использую везде? Ну, это вы такой код привели - не я. Tsyklopи с чего вы взяли что создаётся новое подключение? Буквоед? С точки зрения кода запуска запроса всё равно создаётся новое физическое подключение или создаётся новый Connection proxy со старым подключением. Если нужно вызывать Connection.close(), который где-то этот самый Connection создался. Tsyklop я как бы описал откуда берется подключение и т.д. Всё что вы пишете я прочитал и прокомментировал. Но вам плевать. Вы просто игнорируете то чего не понимаете и продолжаете писать одно и тоже разными словами из поста в пост. Вы нигде ниразу не объяснили в чем именно проблема. Единственное ваше объяснение - хочу объединить 3 в 1 чтобы было как шампунька. На мои два вопроса "зачем" - вы ниразу не удосужились ответить. Замечательно что вы немного упростили код, но, похоже, это потолок. Нужно дальше учиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:41 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopя написал что это возврат конекшена в пул, а не его закрытие. С точки зрения кода, который его использует разницы нет. Но, вы как девочка готовы спорить о любой ерунде, которую вам пишут вместо того чтобы сконцентрироваться на проблеме и способах её решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:43 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczС точки зрения кода, который его использует разницы нет. Но, вы как девочка готовы спорить о любой ерунде, которую вам пишут вместо того чтобы сконцентрироваться на проблеме и способах её решения. я ни с кем не спорю. я слушаю всех и говорю как работает у меня. Не создается новое подключение, а берется из пула подключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 10:58 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopНе создается новое подключение, а берется из пула подключений. Не создаётся новое физическое подключение, но создаётся новое пулированое. Иначе вам бы метод close() не нужен был в принципе. Перестаньте ерунду нести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:07 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczTsyklopНе создается новое подключение, а берется из пула подключений. Не создаётся новое физическое подключение, но создаётся новое пулированое. Иначе вам бы метод close() не нужен был в принципе. Перестаньте ерунду нести. да ёпть. давайте Вы поставите эту либу и сами посмотрите. Я говорю как есть... как это работает. в пуле уже есть 10 подключений которые подключены к бд. Берется какое-то из них и используется, а close() возвращает подключение в пул свободных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:09 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopпочему же не понятно. он делает по сути то же Вы и пишете а мне отдаёт ResultSet, а я прохожусь в цикле по каждому найденному элементу и записываю в коллекцию. все.вот именно - по сути, только по сути.. но оставляет тебе головняк с коннекшеном. и в добавок - у тебя куча промежуточных классов. почему не сделать сразу из результсета нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:13 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
чё вы по мелочам спорите? В прикладном коде то всё равно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:14 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopда ёпть. давайте Вы поставите эту либу и сами посмотрите. Я говорю как есть... как это работает. в пуле уже есть 10 подключений которые подключены к бд. Берется какое-то из них и используется, а close() возвращает подключение в пул свободных. а я бы прислушался к BlazkowiczНе создаётся новое физическое подключение, но создаётся новое пулированое. Иначе вам бы метод close() не нужен был в принципе. Перестаньте ерунду нести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:17 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
вадяа я бы прислушался к BlazkowiczНе создаётся новое физическое подключение, но создаётся новое пулированое. Иначе вам бы метод close() не нужен был в принципе. Перестаньте ерунду нести. Нет. Вот гайд который это описывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:20 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopда ёпть. давайте Вы поставите эту либу и сами посмотрите. Я говорю как есть... как это работает. в пуле уже есть 10 подключений которые подключены к бд. Берется какое-то из них и используется, а close() возвращает подключение в пул свободных. Вы пытаетесь объяснить работу connection pool-а человеку с опытом программирования на Java более 15 лет. Продолжайте игнорировать то чего не понимаете и обязательно придёте к успеху. Пишите очевидное отрицая деталей и ваш код сразу станет лучше. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:22 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopНет. Вот гайд который это описывает. По-моему он нас тупо тролит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:23 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПо-моему он нас тупо тролит. да в чем же тролю? поясните...не пойму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:24 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Вот я нашел гайд по циклам в Java. Циклы мы ещё не обсуждали по-моему. Это же не так сложно как прокси. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:24 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopда в чем же тролю? поясните...не пойму. Я готов поставить пару тыр на то что все отметившиеся в этой и в вашей предыдущей теме прекрасно знают и понимаю работу пула соединений. Поэтому ваши попытки объяснять более опытным коллегам прописные истины выглядят уморительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:26 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВот я нашел гайд по циклам в Java. Циклы мы ещё не обсуждали по-моему. Это же не так сложно как прокси. поясните пожалуйста... что не так Я делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:26 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Помню году так в 2004-м двое парней забегают в комнату и с глазами по 5 копеек объявляют, что в Java, оказывается один и тот же класс загруженый разными ClassLoader-ами это два разных класса! Сенсация! Было примерно так же забавно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:28 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopпоясните пожалуйста... что не так Я делаю? - Игнорируете вопрос "зачем" вы хотите объединять классы. Вы считаете что это упрощение. Но обычно, упрощение заключается в разделении на модули, пакеты классы и методы, а не в объединении. - Спорите по комментариям, которые к вашему коду прямого отношения не имеют. - Спорите с теми кто вам указывает на то что ваши объяснения не достаточно понятны. Хотя что тут спорить? Игнорируйте коментарии не по сути вопроса. - Не задаёте вопросов по тем советам которые вам уже дали. Приятно видеть что вы уже немного зарефакторили код, но количество копипасты всё ещё можно уменьшить. - Приводите недостаточно кода чтобы объяснить проблему. - Упираетесь в ваш способ "объединения" как единственный способ решения проблемы, в то время как проблему вы не обрисовали и альетернативные её решения не рассмотрели. Ну, и продолжать можно долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:34 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я не знаю какой код еще привести в пример. Могу лично Вам скинуть проект гляните... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:51 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklopя не знаю какой код еще привести в пример. Могу лично Вам скинуть проект гляните... Вот вы привели код Код: java 1. 2. 3. Я его екстраполирую и делаю вывод, что остальные методы выглядят так же Код: java 1. 2. 3. Из чего я делаю вид, что инфраструктура у вас переиспользуется копипастой. Вы же отвечаете, что это не так, но не приводите, как у вас выглядят два разных использования двух разных методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 11:54 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИз чего я делаю вид, что инфраструктура у вас переиспользуется копипастой. Вы же отвечаете, что это не так, но не приводите, как у вас выглядят два разных использования двух разных методов. извиняюсь. Вот кусок кода как я использую такое: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. DataBase я писал в первом посте. Со всем остальным работа по аналогии. У меня есть некая модель UserModel которая обрабатывает запросы и отдаёт результат. То бишь все приходит на один контроллер Server. Этот Server смотрит на какую модель пришел запрос(пример запроса /Server/user/login. Тут будет вызвана модель UserModel и у неё вызван метод login), передаёт в неё все данные касательно запроса (параметры и т.д.) она уже обращается к базе, делает что нужно и возвращает ответ в Server ну а тот отдаёт клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:02 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz,код который я привел это не модель а фильтр, когда человек заходит на страницу. Я проверяю его данные и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:03 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Если user в сессии, то зачем тут DAO new DataBase() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:22 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
ТС почти написал свою ОРМ. Осталось написать объект гетКонтекстСессион и кэш первого уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:29 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123Если user в сессии, то зачем тут DAO new DataBase() ? Проверить реально ли юзер авторизован. Сессия разрушается через 30 минут бездействия. Если юзер зашел на страницу а сессии нет то нужно проверить юзера и заполнить объект данными. Даже если сессия есть то все равно выполняется проверка хэша авторизации который в куках. Если юзер не авторизован или хэш не валидный его выбрасывает на главную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:31 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123ТС почти написал свою ОРМ. Осталось написать объект гетКонтекстСессион и кэш первого уровня. что это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:32 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklop, Отлично. У нас есть более полный, но всё ещё один единственный метод. Остаётся не понятным что именно упростит наличие 3x DataBase классов или одного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:49 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczTsyklop, Отлично. У нас есть более полный, но всё ещё один единственный метод. Остаётся не понятным что именно упростит наличие 3x DataBase классов или одного? В коде который я привел есть уже класс DataBase который включет в себя все три моих класса с запросами. Я их объеденил в один что бы не создавать по три объекта там где мне нужна бд. При том моём подходе (когда было 3 объекта) была бага что для каждого класса берется новый конекшн из пула, а не один. То бишь для каждого объекта брался свой коннекшн из пула - это не есть правильно. Обертка DataBase делает один конекшн для всех трех объектов. Я сейчас все переделываю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:53 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Перехожу на другой пул от Tomcat. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 12:54 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Tsyklop, Ваша проблема это следствие того что вы берете Connection из DataSource в одном месте, а закрываете совершенно в другом. Хороший код должен следовать правилу - взял, закрыл в этом же методе в блоке finally: Код: java 1. 2. 3. У вас этого нет. DataSource у вас один единственный. А вы его зачем-то помещаете в кучу разных переменных без особой на то надобности. И соответсвенно путаетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:00 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopЯ сейчас все переделываю. А вот если бы инфраструктура работы с БД была бы отделена от бизнес-транзакций, то переделывали бы только инфрастуктуру а не всё. - Вы можете методы своего Server выделить в интерфейс? - Вы можете написать Proxy с этим интерфейсом, так чтобы InvocationHandler, который бы для всех таких методов создавал Database, потом делегировал бы вызов настоящему объекту Server, и после этого бы уже закрывал ваш Database? - Вы можете передать Database из InvocationHanlder-а в Server через параметры или ThreadLocal? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:03 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopСессия разрушается через 30 минут бездействия. это параметр и его можно менять самому. TsyklopЕсли юзер зашел на страницу а сессии нет нет. Сессия всегда есть. Только будет новая и в сесии не будет объекта User TsyklopДаже если сессия есть то все равно выполняется проверка хэша авторизации который в куках я спросил зачем тебе DAO который работает с базой!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:05 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopТо бишь для каждого объекта брался свой коннекшн из пула - это не есть правильно. кто сказал такую ересь? У MS рекомендации - на одну форму-окно один коннект. Т.е. если 5 форм висят в памяти то будет 5 коннектов. И нет проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:08 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopТо бишь для каждого объекта брался свой коннекшн из пула - это не есть правильно попытайся обосновать почему это не правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:11 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
наконец то мы добрались до сути всех топиков Tsyklop. У него было 3 коннекта на 3 класса и он решил что это непорядок. Надо объединить 3 класса. Перфекционист - что возьмёшь)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:11 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123TsyklopСессия разрушается через 30 минут бездействия. это параметр и его можно менять самому.причём менять динамически в коде, продлять на некоторое время, к примеру 5мин, и можно поставить слушатель окончания сессии - если сессия закончилась на сервере - с помощью ws послать сообщение клиенту(браузеру) и он перейдёт на страницу входа. т.е. скроет от посторонних всё что юзер делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:12 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
вадя, разумеется. Ты видишь его фильтр выше который вызывается на каждый F5 странички. Разве не видно, что нафига там запрос в базу. Это ведь тормоза! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:15 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123У него было 3 коннекта на 3 класса и он решил что это непорядок просто каша в голове от всего на свете, плюс отсутствие минимальных базовых знаний. Это нормально. Ненормально упрямство и нежелание вникнуть в советы. Могу только присоединиться к совету о прочтении книжек Мартина и Фаулера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:17 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
chpashaНенормально упрямство и нежелание вникнуть в советы по моему опыту, упрямцы такого рода (задиристые) не становятся профи в программистах. Удачи аффтару! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:20 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopПроверить реально ли юзер авторизован. Сессия разрушается через 30 минут бездействия. Если юзер зашел на страницу а сессии нет то нужно проверить юзера и заполнить объект данными. Даже если сессия есть то все равно выполняется проверка хэша авторизации который в куках. Если юзер не авторизован или хэш не валидный его выбрасывает на главную. Прошу прощения, но зачем?! Чем вам стандартные библиотеки/фреймворки/приложения не угодили? Тем более стандартный сервер приложений/сервлетов все это умеет "из коробки" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:45 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
mad_nazgulПрошу прощения, но зачем?! Чем вам стандартные библиотеки/фреймворки/приложения не угодили? ему некогда с ними разбираться ТС - теперь ты видишь, к чему приводят повторы? Страниц столько же, одни и те же вопросы обсасываются снова и снова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 13:50 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
mad_nazgulПрошу прощения, но зачем?! Чем вам стандартные библиотеки/фреймворки/приложения не угодили? Тем более стандартный сервер приложений/сервлетов все это умеет "из коробки" читайте первый пост темы. Там я об этом написал. Что он умеет из коробки? проверить если ли юзер в бд? проверить авторизован ли он? и т.д. Если реально такое есть, без фреймворков, то покажите пожалуйста. очень интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:13 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
chpashaPetro123У него было 3 коннекта на 3 класса и он решил что это непорядок просто каша в голове от всего на свете, плюс отсутствие минимальных базовых знаний. Это нормально. Ненормально упрямство и нежелание вникнуть в советы. Могу только присоединиться к совету о прочтении книжек Мартина и Фаулера. Каких базовых знаний не хватает? огласите список пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:14 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczTsyklopЯ сейчас все переделываю. А вот если бы инфраструктура работы с БД была бы отделена от бизнес-транзакций, то переделывали бы только инфрастуктуру а не всё. - Вы можете методы своего Server выделить в интерфейс? - Вы можете написать Proxy с этим интерфейсом, так чтобы InvocationHandler, который бы для всех таких методов создавал Database, потом делегировал бы вызов настоящему объекту Server, и после этого бы уже закрывал ваш Database? - Вы можете передать Database из InvocationHanlder-а в Server через параметры или ThreadLocal? в Server нет методов. это просто контроллер который передаёт запрос в модель - то бишь создает объект модели и передаёт в неё все данные. Вот мой Server: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Controller: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. Далее все передаётся в модель. Пример метода login: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:19 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
TsyklopКаких базовых знаний не хватает? огласите список пожалуйста как писать хороший код (Clean code , Robert Martin) и как организовывать архитектуру приложения (Patterns of Enterprise Application Architecture, Martin Fowler) . Наверное имеет смысл именно в таком порядке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:24 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123У MS рекомендации - на одну форму-окно один коннект. Т.е. если 5 форм висят в памяти то будет 5 коннектов. И нет проблем. В формах работают по-очереди. А здесь 3 класса могут сохранять все одновременно - если будут 3 разных коннекта, они не будут видеть изменений сделанных из 2-х других классов, при должном умении можно самого себя задедлочить, не ясно как передавать FK между ними и в каком порядке коммитить эти транзакции чтобы не упасть, а самое главное нельзя будет реализовать транзакционное изменение данных хотя бы 2-мя этими классами, если данные меняются ими 2-мя без распределенных транзакций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:49 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Локшин МаркВ формах работают по-очереди.это что то новое. Расшифруйте что за очередь? ГУИ? Дак могут и потоки быть. Локшин МаркА здесь 3 класса могут сохранять все одновременно - если будут 3 разных коннекта, они не будут видеть изменений сделанных из 2-х других классов конечно. Т.к. у него рукописный ОРМ. Зачем? Вместо ОРМ всё пустить в один ворота-коннект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:52 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Локшин Маркесли будут 3 разных коннекта, они не будут видеть изменений сделанных из 2-х других классов а вы знаете что в пуле тоже не видны изменения? ))) По вашему убрать пул? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:53 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Локшин Марки в каком порядке коммитить эти транзакции чтобы не упасть вы не читали тред - у него автокоммит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:55 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123Расшифруйте что за очередь? ГУИ? Дак могут и потоки быть. Это означает, что данные меняются формами независимо друг от друга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:55 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123а вы знаете что в пуле тоже не видны изменения? ))) По вашему убрать пул? Не нужно в каждый менеджер совать свой коннекшен, не важно откуда его брать - напрямую с драйвера или с коннекшен пула. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:58 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Локшин МаркPetro123Расшифруйте что за очередь? ГУИ? Дак могут и потоки быть. Это означает, что данные меняются формами независимо друг от друга. как захочу. Хочу передам коннект. Захочу создам новый. Вы чего испугались то? Я не пойму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 14:58 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Локшин МаркНе нужно в каждый менеджерслово менеджер придумали вы. И детские страхи только у вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:00 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Локшин Марк, все ваши посты про транзакци и не имеют смысла при автокоммите. Это к автору топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:03 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123Локшин МаркНе нужно в каждый менеджерслово менеджер придумали вы. Который тут называется классом. Petro123И детские страхи только у вас. В больнице тазепам закончился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:10 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Petro123Локшин Марк, все ваши посты про транзакци и не имеют смысла при автокоммите. Это к автору топика. В этом топике автор нигде не указывал, что он работает с автокоммитом. Если нам важна целостность данных в базе, то это первое, что нужно отключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:15 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
Локшин МаркPetro123Локшин Марк, все ваши посты про транзакци и не имеют смысла при автокоммите. Это к автору топика. В этом топике автор нигде не указывал, что он работает с автокоммитом. Если нам важна целостность данных в базе, то это первое, что нужно отключить. да. Де-юры вы правы. он указал в прошлом топике. И да, я тоже всегда выкл автокоммит. Но это OFFTOP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 15:27 |
|
||
|
Объединение sql запросов в один класс - упрощение (Обновлено)
|
|||
|---|---|---|---|
|
#18+
chpashaкак писать хороший код (Clean code , Robert Martin) и как организовывать архитектуру приложения (Patterns of Enterprise Application Architecture, Martin Fowler) . Наверное имеет смысл именно в таком порядке Мил человек спасибо большое. Начал читать первую книгу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 17:03 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2122109]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
153ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 262ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...