Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring и Хранимые процедуры / 3 сообщений из 3, страница 1 из 1
05.09.2013, 10:07:23
    #38387475
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring и Хранимые процедуры
Добрый день! вопрос про Spring и Вызов Хранимых процедур.

Есть Бин в котором есть методы аннотированные как @Transactional ,

вопрос - если в методе идет вызов Хранимой процедуры - нужно ли его аннотировать?
Ведь Исполнение процедуры - в базе уже идет в своей транзакции !?


Нужно ли в методе callReportProcedure вызывать
Код: java
1.
2.
3.
session.beginTransaction();
... // call
session.getTransaction().commit();



Код: 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.
@Service
public class ServiceImpl implements Service{


    @Autowired
    private SessionFactory sessionFactory;
    private HibernateTemplate ht;

    @PostConstruct
    public void init() {
        ht = new HibernateTemplate(sessionFactory);
        ht.setFlushMode(HibernateAccessor.FLUSH_AUTO);
    }

    @Transactional
    public CancelResult cancel(TCancel tCancel) {
        ...
   }

  @Override
    public ReportResult callReportProcedure(Date from, Date till){

           session = sessionFactory.openSession();
           java.sql.Connection con = session.connection();

           CallableStatement statement = null;

           statement = con.prepareCall("{CALL ONLINE_REPORT(?, ?)}");
           statement.setTimestamp(1, new Timestamp(from.getTime()));
           statement.setTimestamp(2, new Timestamp(till.getTime()));

           statement.execute();
          ResultSet rs = statement.getResultSet();
          ...
          statement.close();
          session.flush();
          session.close();

}




И второй вопрос :


Если есть метод в котором идет вызов-композиция методов из разных сервисов аннотированых как @Transactional

Нужно ли его так же аннотировать?
...
Рейтинг: 0 / 0
05.09.2013, 10:15:07
    #38387489
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring и Хранимые процедуры
Atum1вопрос - если в методе идет вызов Хранимой процедуры - нужно ли его аннотировать?

Желательно. Даже если в хранимке только чтение происходит. А если запись, так тем более.

Atum1Ведь Исполнение процедуры - в базе уже идет в своей транзакции !?
Сюрприз! Все запросы к транзакционным RDBMS идут в своих транзакциях.

Atum1Нужно ли в методе callReportProcedure вызывать
Код: java
1.
2.
3.
session.beginTransaction();
... // call
session.getTransaction().commit();



Ну, если вам нужно ручное управление транзакцией. И нет никакой возможности использовать декларативное...




Atum1Если есть метод в котором идет вызов-композиция методов из разных сервисов аннотированых как @Transactional
Нужно ли его так же аннотировать?
Скорее да, чем нет. Ведь один метод это почти всегда одна логическая транзакция. Поэтому вполне разумно всю работу с базой осуществлять в одной тразакции БД. До тех пор пока постановка задачи не требует обратного.
...
Рейтинг: 0 / 0
05.09.2013, 11:25:08
    #38387586
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring и Хранимые процедуры
Blazkowicz,
Спасибо большое !
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring и Хранимые процедуры / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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