|
|
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
История такая - есть прога которую писали тупые студенты, щас хочу немного переписать. Работа с БД там такая - в 5 классах при старте создавались свои подключения к БД, причем настройки соединения дублировались во всех 5, потом в каждом классе делался запрос к БД и помещал все данные в ОДИН глобальный объект "контекст". А все формы обращаются к этому объекту и читают из него, т.е. там все поля всех таблиц разделены только комментариями. Запись в базу не реализована пока вообще. Я хочу перевести работу на JPA , чтобы не писать километровые куски JDBC-кода и обновлять из рекордсета элементы форм вручную. Хочу чтоб были биндинги для контролов, хочу сохранение и чтение всех полей одной строкой. Пока удалось перевести одну форму на JPA - создал класс сущности, при открытии обращаюсь и получаю данные в List<>. Читает нормально но в полсекунды задержка и в лог пишется это: автор Код: plaintext 1. Само соединение с базой я переделал и вывел в отдельный класс-синглтон. Пока получаю данные так: Код: java 1. 2. 3. Второй вопрос - как теперь повесить биндинг к элементу полученных данных? В уроках нетбинса все мастером делают, у меня нет в меню этого объекта куда я получаю данные. И третье - надо ли углубляться в ТопЛинк/Хибер , или можно как то попроще сделать? Мне не надо всякие межтабличные связи, кучу аннотаций... Пока гуглю на каждый мелкий вопрос, вроде понемногу получается ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 22:08:13 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychik, у тебя нет практически ничего из стека БД ---> ГУИ. Вот и начинай с низу - Модель данных или Структура БД и маппинг классов на неё. Предметная область \ выделение сущностей ЗНАЧИМЫХ для бизнеса. ЗЫ. Как ты без связей обойдёшься - под вопросом. ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 23:55:30 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
Нее, есть модель с маппингом. Я уже сделал класс-сущность для одной таблицы (для теста на ней), добавил на форму бин указывающий на эту сущность. Сейчас вопрос вот в чем - я указал привязку текстового поля к одному полю этого бина, получаю данные в него, а на форме данные не появляются. Если без привязки делать тупо txtField.setText(dataitem.getField()); тогда данные видно Так как полей около 20, как то нерационально писать руками если есть механизм привязок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 00:42:47 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
В целом мне надо сделать типичное окно-навигатор с кнопками "вперед", "назад", "новая" по записям таблицы В яве даже такой примитив выливается в шаманство, охренеть просто. Если есть готовые примеры или наводки где искать, буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 00:51:07 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychik, А если добавить в модель описание UI полей и генерить форму, не быстрее получится? Там кода не много нужно, а профит ощутимый. что-то типа такого замутить: Код: java 1. 2. И написать обработку аннотации для генерации формы или просто для связывания компонентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 07:18:39 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychikВ целом мне надо сделать типичное окно-навигатор с кнопками "вперед", "назад", "новая" по записям таблицы В яве даже такой примитив выливается в шаманство, охренеть просто. Если есть готовые примеры или наводки где искать, буду благодарен. чтобы не шаманить для таблиц есть 3 варинта ZK \ SmartGWT \ Vaadin ну и ещё всякие Клик и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 10:19:48 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
Petro123ZK \ SmartGWT \ Vaadinу меня не веб, а десктоп. на свинге надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 11:51:43 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
Приходится сейчас делать так: В конструкторе формы: Код: java 1. 2. 3. 4. процедура LoadDataToUI(int i) помещает во все контролы значения из объекта под номером i в списке всех строк-объектов Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Затем надо будет сделать процедуру LoadDataFromUI , там сделать все наоборот. Мне одному кажется что это тупо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 14:13:59 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychik, JGoodies Binding глянь, там без аннотаций, но само связывание хорошее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 16:24:35 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
черт, теперь проблема с JPA - русские символы не показываются. Если просто через JDBC соединяться то там можно указать Код: java 1. . А как в конфигурации JPA это указать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 17:59:30 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
кажтся перевод на JPA слишком монструозное предприятие, надо изучать матчасть и книги читать. Примеры биндинга на сайте нетбинса есть только для таблиц, для отдельных полей показан только биндинг к активной строке таблицы. Добавил в класс сущности метод getAll и через JDBC заполняю спиоск объектов, потом добавлю методы Update(id) и Delete(id). Лучше тупо но 100% работает чем неделю городить монстра JPA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 18:08:14 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychikчерт, теперь проблема с JPA - русские символы не показываются. Если просто через JDBC соединяться то там можно указать Код: java 1. . А как в конфигурации JPA это указать? - в настройках JDBC-пула, в соответствии со спецификой используемого JDBC-драйвера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 19:12:21 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
так это и есть команда для JDBC, а в JPA как? Где там JDBC пул? Там в persistence.xml все прописывается и все. Пытался там в проперти добавить "encoding" - нет эффекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 20:31:09 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychikтак это и есть команда для JDBC, а в JPA как? Где там JDBC пул? Там в persistence.xml все прописывается и все. Пытался там в проперти добавить "encoding" - нет эффекта - в persistence.xml описываются либо настройки для JDBC-драйвера, либо указывается имя внешнего JDBC-пула. Начнем с простых вопросов: 1) Вы используете JDBC-пул или непосредственное подключение к БД? Судя по вопросу: badboychikЧто это за коннект и логин, он отдельно от ранее созданного соединения будет постоянно коннектиться что ли?? Или можно ему передать соединение? делаю телепатический вывод, что пул не используется (отсюда и проблемы с производительностью) 2) Какая БД и соответственно JDBC-драйвер используется? (для разных БД настройки разные) 3) Чтобы не играть в вопросы-ответы приведите свой persistence.xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 10:27:25 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
БД фаербёрд, драйвер Jaybird файл как в примерах Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 17:46:06 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychikЯ хочу перевести работу на JPA , чтобы не писать километровые куски JDBC-кода и обновлять из рекордсета элементы форм вручную. Не думаю, что имеет смысл затевать шаманство с JPA. Хотя для общего развития полезно. badboychikХочу чтоб были биндинги для контролов, хочу сохранение и чтение всех полей одной строкой. JGoodies Bindging. Это единственный биндинг для свинга (если речь про десктоп, конечно). badboychikЧто это за коннект и логин, он отдельно от ранее созданного соединения будет постоянно коннектиться что ли?? Или можно ему передать соединение? Нет, EclipseLink будет сам создавать соединения, когда ему нужно. Обычно, как минимум два - на чтение и на запись. badboychikСамо соединение с базой я переделал и вывел в отдельный класс-синглтон. Пока получаю данные так: Код: java 1. 2. 3. Это не соединение с базой. Это синглетон работы с JPA EMF. Как правило, каждый EntityManager создает свое соединение с базой. badboychikВторой вопрос - как теперь повесить биндинг к элементу полученных данных? В уроках нетбинса все мастером делают, у меня нет в меню этого объекта куда я получаю данные. NetBeans использует Beans Binding, который помер и вряд ли воскреснет. badboychikВ целом мне надо сделать типичное окно-навигатор с кнопками "вперед", "назад", "новая" по записям таблицы В яве даже такой примитив выливается в шаманство, охренеть просто. Если есть готовые примеры или наводки где искать, буду благодарен. для JGoodies Bindings: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. вроде как для начала не очень сложно :) Проблемы начинаются с выводом форматированных данных (даты, числа с точкой etc). Но это уже совсем другая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2012, 09:31:14 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
- что-то вроде: Код: xml 1. 2. хотя насчет CP1251 я бы подумал, возможно есть какая-то путаница с кодировками, но тут Вам видней в какой кодировке у Вас что ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2012, 10:13:47 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
AlexJmЭто не соединение с базой. Это синглетон работы с JPA EMF Не, синглтон используется для простого JDBC, сейчас через него работаю, JPA убрал AlexJmНет, EclipseLink будет сам создавать соединения, когда ему нужно. Плохо.. если при открытии каждой формы будет создаваться соединение, это будет постоянно задержка открытия формы. Должен быть какой то пул... Я слышал в курсах что EntityManager это легкий объект, можно создавать сколько угодно, а вот EntityManagerFactory лучше при старте один раз создать, он тяжелый. автор.....?charSet=Cp1251так выдает ошибку при соединении, это способ для MySQL подходит В итоге - если использовать JDBC это надо для каждой таблицы 1) создать класс 2) создать в нем как минимум методы getAll, findById,update,delete 3) и в них все запросы ручками собирать из полей 4) прописать вручную jgoodies-биндинг контролов к полям классов так что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 08:25:29 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychikAlexJmНет, EclipseLink будет сам создавать соединения, когда ему нужно. Плохо.. если при открытии каждой формы будет создаваться соединение, это будет постоянно задержка открытия формы. Должен быть какой то пул... Я слышал в курсах что EntityManager это легкий объект, можно создавать сколько угодно, а вот EntityManagerFactory лучше при старте один раз создать, он тяжелый. Я баловался вот с таким: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. badboychikВ итоге - если использовать JDBC это надо для каждой таблицы 1) создать класс 2) создать в нем как минимум методы getAll, findById,update,delete 3) и в них все запросы ручками собирать из полей 4) прописать вручную jgoodies-биндинг контролов к полям классов так что ли? видимо да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 10:41:53 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychikПлохо.. если при открытии каждой формы будет создаваться соединение, это будет постоянно задержка открытия формы. ты пробовал? Не будет никакой задержки. ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 11:56:27 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychik, MS рекомендует открывать соединение на каждое окно-форму. Но это не для Java-стереотипов и архитектуры. ЗЫ. Пиши, как тебе удобнее и ПОД проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 11:59:33 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
Petro123badboychikПлохо.. если при открытии каждой формы будет создаваться соединение, это будет постоянно задержка открытия формы. ты пробовал? Не будет никакой задержки. смотря с чем соединяться. С Firebird - да, задержки быть не должно, с Oracle - выглядит смешно, особенно на lookup-формах. Petro123badboychik, MS рекомендует открывать соединение на каждое окно-форму. Но это не для Java-стереотипов и архитектуры. ну да. И в persistent-layer хранить все объекты по нескольку раз (кто мешает открыть одну и ту же форму дважды)? Да и Refresh без auto-commit будет прикольно смотреться. Но самое веселое, что в случае с Eclipse/TopLink JPA эта рекомендация становится единственно возможным способом общения с данными. Каждая форма - свой EntityManager. А еще лучше - каждый запрос. Я как это (и замечательную работу ScrollableCursor) увидел, так и забил на сей продукт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 12:38:12 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
Petro123badboychikПлохо.. если при открытии каждой формы будет создаваться соединение, это будет постоянно задержка открытия формы. ты пробовал? Не будет никакой задержки. пробовал, есть задержка. Видно по консоли нетбинса как EclipseLink открывает соединение, ради 10 строк для заполнения комбобокса происходит задержка 0.5-1 секунда AlexJmвидимо да.ппц А ктонибудь использовал ORM "Ebean" ? пишут что легкий и удобный. Язык запросов на дотнетовский LINQ похож 1в1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 12:58:11 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
badboychikпробовал, есть задержка. Видно по консоли нетбинса как EclipseLink открывает соединение, ради 10 строк для заполнения комбобокса происходит задержка 0.5-1 секунда AlexJm ты перепутал соединенние на форму-окно-view и на контрол? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 13:11:12 |
|
||
|
как перевести программу на JPA с минимальными усилиями
|
|||
|---|---|---|---|
|
#18+
вообще склоняюсь к использованию nosql баз. Никаких запросов и ORM, вызвал SAVE() и все. вот читаю http://www.garret.ru/eoodbms.html#compare ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2012, 13:14:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37817864&tid=2131644]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
56ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 347ms |
| total: | 543ms |

| 0 / 0 |
