
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.05.2015, 11:31
|
|||
|---|---|---|---|
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
Здравствуйте. За недельку-полторы, благодаря sql.ru, разобрался с DBCP, разобрался с некоторыми настройками, все работает, соединения держаться, освобождаются и прочее. Вопрос теперь в том, как обращаться к пулу из внутренних фреймов JInternalFrame. На данный момент я просто в конструкторе передаю экземпляр созданного при запуске главного окна пула, вызывая у него через метод DataSource и далее выполняю с ним все нужные манипуляции. А как еще можно побыстрее, покороче, обратиться к DataSource, не создавая при этом экземпляр класса с пулом? У меня есть парочка предположений, но из-за отсутствия опыта, я боюсь показаться глупым написав их здесь :) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 11:58
|
|||
|---|---|---|---|
|
|||
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
JInternalFrame это Presentation Layer. DataSource это Data Access Layer. Обращаться из GUI к JDBC API это каша. GUI класс работает с Domain Model и Swing API. Domain Model обращается к Repository. Repository уже может быть реализацией DAL. Инкапсулируй! Собственно решений тут как бы два Inversion of Control и Singleton. IoC реализуется либо через Dependency Injection или Service Lookup. Но в простейшем случае можно Service Lookup выродить в Singleton. И обращаться к DAL через глобальную переменную. Очень рекомендую хотя бы разделять "Логику" и "Представление". А "Логику" в свою очередь рекомендую разделить на "Бизнес-логику" и "Работу с БД". Будет хоть какое-то подобие архитектуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 13:43
|
|||
|---|---|---|---|
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
Blazkowicz, Спасибо, почитал про Ioc и DI, которые, как раз, и были в моих мыслях. Но, насколько я понял, просто так их использовать не получится, они будут вызывать новую инициализацию (new() ), ну или я слишком поверхностно пробежался по теме. А вот Singleton как раз то, что нужно! Добавил его реализацию(Double-Checked Locking с volatile) в класс пула. Заодно почистились многие классы (в частности и GUI), от ненужных параметров в конструкторе и переменных. По поводу разделения логики, представления и прочего - я стараюсь все раскидывать по отдельным папках, в зависимости от назначения классов. Но вот в другом проекте, использовал немного другой принцип, разбивал классы по отделам предприятия, а внутри добавлял еще папки, которые уже разделялись на представления, логику и классы для работы с бд. Бардак с одной стороны, хотя... Еще раз, Спасибо за помощь, думаю, что в дальнейшем я все же вернусь к Ioc и DI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 14:27
|
|||
|---|---|---|---|
|
|||
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
NixicНо, насколько я понял, просто так их использовать не получится, они будут вызывать новую инициализацию (new() ), ну или я слишком поверхностно пробежался по теме. Слишком поверхностно. Суть DI в том, что можно написать один класс, который создаст все другие и проставит между ними ссылки. То есть один класс-контейнер проинициализирует один DataSource и расставит ссылки на него во все классы, которым это нужно. NixicА вот Singleton как раз то, что нужно! Ну, как сказать. В простейших случаях - да. NixicДобавил его реализацию(Double-Checked Locking с volatile) в класс пула. Кто вам в голову это фигней насрал? final поле и synchronized инициализация больше ничего не нужно. Не нужна вам ленивая инициализация. Не будет у вас 100500 потоков бороться за создание DataSource. NixicЗаодно почистились многие классы (в частности и GUI), от ненужных параметров в конструкторе и переменных. Ещё бы GUI от JDBC почистить. NixicПо поводу разделения логики, представления и прочего - я стараюсь все раскидывать по отдельным папках, в зависимости от назначения классов. Package by feature, not layer NixicНо вот в другом проекте, использовал немного другой принцип, разбивал классы по отделам предприятия, а внутри добавлял еще папки, которые уже разделялись на представления, логику и классы для работы с бд. Бардак с одной стороны, хотя... Еще раз, Спасибо за помощь, думаю, что в дальнейшем я все же вернусь к Ioc и DI. Так лучше. Но в этом случае внутренние пакеты и не нужны особо. Там редко бывает больше одного класса определенного слоя. Разве что domain model. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 14:48
|
|||
|---|---|---|---|
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
BlazkowiczNixicДобавил его реализацию(Double-Checked Locking с volatile) в класс пула. Кто вам в голову это фигней насрал? final поле и synchronized инициализация больше ничего не нужно. Не нужна вам ленивая инициализация. Не будет у вас 100500 потоков бороться за создание DataSource. Вот они , эти злые люди )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 14:51
|
|||
|---|---|---|---|
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
Blazkowicz, а по потокам - да, немного их. Я по вашему совету добавил лишь SwingWorker, его должно за глаза хватить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 14:53
|
|||
|---|---|---|---|
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
то есть, получается, достаточно лишь? Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 16:31
|
|||
|---|---|---|---|
|
|||
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
NixicКто вам в голову это фигней насрал? final поле и synchronized инициализация больше ничего не нужно. Не нужна вам ленивая инициализация. Не будет у вас 100500 потоков бороться за создание DataSource. Добрые люди там оставили вводную ссылочку, которая на много более полезна: http://habrahabr.ru/post/27108/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.05.2015, 16:31
|
|||
|---|---|---|---|
|
|||
Swing, JInternalFrame, Apache Commons DBCP |
|||
|
#18+
Nixicто есть, получается, достаточно лишь? Код: java 1. 2. 3. ДА! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2125421]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 485ms |

| 0 / 0 |
