![]() |
Модераторы: LSD, AntonSaburov Страницы: (29) « Первая ... 9 10 [11] 12 13 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
А покажи код, чего и как делаешь. Есть подозрение, что нужно правильно объявить scope контекста персистенции. Попробуй такое объявление фабрики:
И вообще, почитай вот это вот: Design Choices in a Web-only Application Using Java Persistence. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Лови По поводу выбора БД, могу еще предложить FireBird. Простая, бесплатная база данный. Имеет, в отличие от мускуля, мощный диалект SQL, причем довольно чистый, избавленный от болезней роста многих "больших" баз. Практически полностью соответствует стандарту SQL-92 (не уверен по поводу SQL-99) Довольно шустрая и может работать с большими объемами. http://ru.wikipedia.org/wiki/Firebird http://www.firebirdsql.org/ Это сообщение отредактировал(а) fixxer - 5.7.2007, 09:59 -------------------- ![]() |
|||
|
||||
diablero |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Такое объявление ничиго не изменило -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||||
|
|||||||
diablero |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Что-то с запросами у меня вообще загвостка. Погуглил и только больше запутался.
Если бы кто-нибудь объяснил по русски, доступно. Было бы здорово -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
fixxer, спасибо за отличную книжку! Плюс без разговоров
![]() Сейчас читаю 9-ю главу (там же, кстати, освещается работа через JPA) - это как раз про контекст персистенции и состояния жизненного цикла персистируемых объектов. Там в числе прочего говорится, что изначально энтити, созданные по new (или как в нашем случае сгенерированные XStream), неизвестны механизму персистенции. Операция merge() как раз и вводит энтитю в соответствующий контекст. Так что я так понимаю, для сохранения объекта в базе после merge() еще нужно выполнить persist(). У тебя в базу что-нибудь попадает? А что именно не выходит с запросами? Выкладывай, будем разбираться. А то сам понимаешь: лето, пора отпусков - все ясновидящие на курортах ![]() -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
diablero |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Да, все работает. Загнал в базу всех User и Post. Я сейчас хотел потренироваться с запросами. Повыбирать User и Post. И пока не додумал, как получить всех User или Post. Времени уже нет разбираться, я сегодня уеду по работе до воскресенья, в лутшем случае. Доступ в интернет будет, правда только к форуму, через телефон. завтра я ее скачаю, буду разбираться -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Подозреваю, что для введения нового объекта достаточно persist(). А merge() это для введения detached объекта (вышедшего из контекста сессии) в контекст другой сессии. Но не уверен, пусть знающие поправят. -------------------- ![]() |
|||
|
||||
diablero |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Мне нужна помощь, потому что я уже зарылся, и клавиатуре остался один удар до кончины
![]() Если простые запросы работают, как:
А вот с запросами с параметрами проблема. Это сообщение отредактировал(а) diablero - 8.7.2007, 17:26 -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
diablero |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Все, разобрался.
![]() -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
diablero |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Готово.
Это сообщение отредактировал(а) diablero - 9.7.2007, 22:07 -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||
|
|||||
diablero |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
И Post.
Что делаем дальше? -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||
|
|||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Все-таки маленько не так. Помнишь, я писал:
Это важно. Понимаешь, так, как сделал сейчас ты, получается, что каждый метод менеджера выполняется в отдельной транзакции. Как же мы тогда обеспечим целостность всей совокупности обращений, например, в рамках обработки одного запроса? И еще пара замечаний.
Вообще персистенцию следовало бы хорошенько потестить на предмет разных возможных ситуаций, включая сбойные. Например, сделать вставку, а потом в этой же транзакции выполнить некорректную операцию, чтобы выскочило исключение. Посмотреть, что получится. Так можно заранее выявить и предотвратить многие неприятные сюрпризы. Это намного проще, чем потом пытаться воссоздать сбойный сценарий, тыкая в вебный интерфейс. В общем, рано пока двигаться дальше. [оффтоп]Товарищи модеры, вы не в курсе, куда делся мой аватар?[/оффтоп] -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
||||
|
||||
diablero |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Поэтому и передаю экземпляр entityManager через параметр метода init(). ОК, персистенцию потестил, прямо в Test'е. Всю работу с базой в менеджерах убрал.
Какую организацию мы будем использовать для решения этой задачи? Это сообщение отредактировал(а) diablero - 11.7.2007, 18:44 -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||
|
|||||
Stampede |
|
||||||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
У нас же есть специальный метод, Infinite.getEntityManager() - вот им и нужно пользоваться. Тут идея вот в чем. Мы неспроста завели интерфейс Manager. Это такая удобная конструкция, про которую известно, что ее можно создать, инициализировать, и в конце работы прихлопнуть. А ты введением в сигнатуру метода Manager.init() параметра EntityManager ломаешь эту конструкцию. Во-первых, JPA - это всего лишь одна из технологий персистенции, хоть и весьма перспективная. Но это конкретная технология и конкретный API, а ты ее зашиваешь в такую абстрактную вещь как Manager. Во-вторых, не все менеджеры обязательно будуть работать с базой. Например, почтовый менеджер, который нам рано или поздно понадобится, может вообще ничего не знать про какой-то там EntityManager. В общем, надеюсь, это достаточно понятно.
Там не работу с базой надо убрать, а работу с транзакциями! Чтобы в менеджере осталось только вот это:
Ты это и имел в виду? Как я уже говорил, в тестах - прямо в коде теста, а когда будем делать вебный слой, то в коде обработки запроса. Чтобы в каждом тесте не дублировать один и тот же код работы с транзакциями, можно воспользоваться преимуществами объектного подхода и написать базовый класс для тестирования датабазного слоя. Что-нибудь типа такого:
Туда же, кстати, можно перенести и метод main() и все действия по инициализацию проги. В результате написание тестов сведется всего-навсего к определению метода doTest(), без лишней мутоты. Собственно, в JUnit примерно так и организовано: ты наследуюшь от TestCase, и все методы, что имеют имя вида testXXX, выполняются за тебя автоматически. Короче, переделай с учетом замечаний и покажи. Возможно, на этом и проведем третью жЫрную черту. После этого сразу приступим к долгожданному вебу ![]() ЗЫ. 2 Maksym: ага, понятно, спасибо. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |