|
|
|
Swing, JInternalFrame, Apache Commons DBCP
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. За недельку-полторы, благодаря sql.ru, разобрался с DBCP, разобрался с некоторыми настройками, все работает, соединения держаться, освобождаются и прочее. Вопрос теперь в том, как обращаться к пулу из внутренних фреймов JInternalFrame. На данный момент я просто в конструкторе передаю экземпляр созданного при запуске главного окна пула, вызывая у него через метод DataSource и далее выполняю с ним все нужные манипуляции. А как еще можно побыстрее, покороче, обратиться к DataSource, не создавая при этом экземпляр класса с пулом? У меня есть парочка предположений, но из-за отсутствия опыта, я боюсь показаться глупым написав их здесь :) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 11:31 |
|
||
|
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, 11:58 |
|
||
|
Swing, JInternalFrame, Apache Commons DBCP
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо, почитал про Ioc и DI, которые, как раз, и были в моих мыслях. Но, насколько я понял, просто так их использовать не получится, они будут вызывать новую инициализацию (new() ), ну или я слишком поверхностно пробежался по теме. А вот Singleton как раз то, что нужно! Добавил его реализацию(Double-Checked Locking с volatile) в класс пула. Заодно почистились многие классы (в частности и GUI), от ненужных параметров в конструкторе и переменных. По поводу разделения логики, представления и прочего - я стараюсь все раскидывать по отдельным папках, в зависимости от назначения классов. Но вот в другом проекте, использовал немного другой принцип, разбивал классы по отделам предприятия, а внутри добавлял еще папки, которые уже разделялись на представления, логику и классы для работы с бд. Бардак с одной стороны, хотя... Еще раз, Спасибо за помощь, думаю, что в дальнейшем я все же вернусь к Ioc и DI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 13:43 |
|
||
|
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:27 |
|
||
|
Swing, JInternalFrame, Apache Commons DBCP
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNixicДобавил его реализацию(Double-Checked Locking с volatile) в класс пула. Кто вам в голову это фигней насрал? final поле и synchronized инициализация больше ничего не нужно. Не нужна вам ленивая инициализация. Не будет у вас 100500 потоков бороться за создание DataSource. Вот они , эти злые люди )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 14:48 |
|
||
|
Swing, JInternalFrame, Apache Commons DBCP
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а по потокам - да, немного их. Я по вашему совету добавил лишь SwingWorker, его должно за глаза хватить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 14:51 |
|
||
|
Swing, JInternalFrame, Apache Commons DBCP
|
|||
|---|---|---|---|
|
#18+
то есть, получается, достаточно лишь? Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 14:53 |
|
||
|
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. ДА! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 16:31 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38957237&tid=2125421]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 301ms |
| total: | 546ms |

| 0 / 0 |
