powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Swing, JInternalFrame, Apache Commons DBCP
10 сообщений из 10, страница 1 из 1
Swing, JInternalFrame, Apache Commons DBCP
    #38957182
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. За недельку-полторы, благодаря sql.ru, разобрался с DBCP, разобрался с некоторыми настройками, все работает, соединения держаться, освобождаются и прочее.
Вопрос теперь в том, как обращаться к пулу из внутренних фреймов JInternalFrame.
На данный момент я просто в конструкторе передаю экземпляр созданного при запуске главного окна пула, вызывая у него через метод DataSource и далее выполняю с ним все нужные манипуляции.

А как еще можно побыстрее, покороче, обратиться к DataSource, не создавая при этом экземпляр класса с пулом?
У меня есть парочка предположений, но из-за отсутствия опыта, я боюсь показаться глупым написав их здесь :)

Спасибо.
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957237
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 через глобальную переменную.

Очень рекомендую хотя бы разделять "Логику" и "Представление". А "Логику" в свою очередь рекомендую разделить на "Бизнес-логику" и "Работу с БД". Будет хоть какое-то подобие архитектуры.
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957468
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Спасибо, почитал про Ioc и DI, которые, как раз, и были в моих мыслях. Но, насколько я понял, просто так их использовать не получится, они будут вызывать новую инициализацию (new() ), ну или я слишком поверхностно пробежался по теме.
А вот Singleton как раз то, что нужно!
Добавил его реализацию(Double-Checked Locking с volatile) в класс пула. Заодно почистились многие классы (в частности и GUI), от ненужных параметров в конструкторе и переменных.
По поводу разделения логики, представления и прочего - я стараюсь все раскидывать по отдельным папках, в зависимости от назначения классов. Но вот в другом проекте, использовал немного другой принцип, разбивал классы по отделам предприятия, а внутри добавлял еще папки, которые уже разделялись на представления, логику и классы для работы с бд. Бардак с одной стороны, хотя...
Еще раз, Спасибо за помощь, думаю, что в дальнейшем я все же вернусь к Ioc и DI.
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957561
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957601
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczNixicДобавил его реализацию(Double-Checked Locking с volatile) в класс пула.
Кто вам в голову это фигней насрал? final поле и synchronized инициализация больше ничего не нужно. Не нужна вам ленивая инициализация. Не будет у вас 100500 потоков бороться за создание DataSource.

Вот они , эти злые люди ))
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957605
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
а по потокам - да, немного их. Я по вашему совету добавил лишь SwingWorker, его должно за глаза хватить.
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957609
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть, получается, достаточно лишь?
Код: java
1.
2.
3.
public class Singleton {
    public static final Singleton INSTANCE = new Singleton();
}
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957734
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicКто вам в голову это фигней насрал? final поле и synchronized инициализация больше ничего не нужно. Не нужна вам ленивая инициализация. Не будет у вас 100500 потоков бороться за создание DataSource.

Добрые люди там оставили вводную ссылочку, которая на много более полезна:
http://habrahabr.ru/post/27108/
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957735
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicто есть, получается, достаточно лишь?
Код: java
1.
2.
3.
public class Singleton {
    public static final Singleton INSTANCE = new Singleton();
}


ДА!
...
Рейтинг: 0 / 0
Swing, JInternalFrame, Apache Commons DBCP
    #38957952
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
да, спасибо, там у меня вторая ссылка как раз эта и есть.
уже использовал шаблон выше, заодно разобрал/вспомнил тему про synchronized :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Swing, JInternalFrame, Apache Commons DBCP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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