Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управление транзакциями БД в приложении, java.sql и бд mysql 
:(
    Опции темы
JustAStudent
Дата 12.1.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.10.2006

Репутация: нет
Всего: 1



Доброго времени суток.
В очередной раз надеюсь на помощь многоуважаемой публики smile 
Проблема в следующем: в java-приложении (для управления данными на сервере MySQL используется jdbc-драйвер) необходимо реализовать мульку сохранения и отката выполненых действий пользователя. Например, добавил юзер инфу по объекту, в приложении изменения отразились, а на сервере сохранились после команды "Сохранить" (или не сохранились при "Отмене").  Взаимодействие с БД происходит через объект java.sql.Connection
Как такое реализовать?

Это сообщение отредактировал(а) JustAStudent - 12.1.2008, 14:03
PM MAIL   Вверх
Platon
Дата 12.1.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 10
Всего: 40



Ну, уж тут тебе однозначного ответа не будет. Это конечно, часто встречающаяся практика, но в жизни можно реализовать по-размому.
http://java.sun.com/blueprints/corej2eepat...sferObject.html
Может быть эта ссылка поможет? Сделай DTOManager, который ведет запись всех действий, по ходу оптимизируя запросы, к примеру:
object1.setValue1("Petr"), object1.setValue1("Peter") приведет к тому, что тебе необходимо будет выполнить только 1 запрос по обновлению строки, а не 2.
PM MAIL ICQ   Вверх
Platon
Дата 12.1.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 10
Всего: 40



Вот я накидал чуток, сильно не бить, я с этим не сталкивался, но столкнуться скорее всего придется, вот и пробую. Ваши замечания предложения.

Выделить всёРазвернуть кодкод Java
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
package platon.memo;
import java.util.LinkedList;
public class TransactionMemo<E> {
    private LinkedList<E> addObjects = new LinkedList<E>();
    private LinkedList<E> removeObjects = new LinkedList<E>();
    private LinkedList<E> updateObjects = new LinkedList<E>();
    private DBManager manager;
    public void addObject(E obj) {
        addObjects.add(obj);
    }
    public void removeObject(E obj) {
        if (!addObjects.remove(obj))
            removeObjects.add(obj);
    }
    public void updateObject(E obj) {
        updateObjects.remove(obj);
        updateObjects.add(obj);
    }
    public void clear() {
        updateObjects.clear();
        removeObjects.clear();
        addObjects.clear();
    }
    public void rollback() {
        clear();
    }
    public void commit() {
        for (E e : addObjects)
            manager.save(e);
        for (E e : updateObjects)
            manager.update(e);
        for (E e : removeObjects)
            manager.remove(e);
    }
}


Добавлено через 8 минут и 44 секунды
Могу также предположить, что это есть в hibernate на уровне сессии. session.startTransaction(), session.getTransaction().commit(), session.getTransaction().rollback();
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.