2015-10-13 5 views
1

Я новичок в мире Java EE, у меня проблема с EJB, на самом деле я только что изучил Stateless EJB, я использую его для своих DAO с введенным в него EntityManager и выполняющим некоторые CRUD, но я не знаю, я ничего не знаю о них, я читал, что одним из их главных преимуществ является то, что они «транзакционные» или что-то в этом роде, я провел много исследований, но я до сих пор не понимаю, что это значит.Java EE, что означает транзакция в EJB?

Не могли бы вы рассказать, почему некоторые люди ненавидят EJB, что так тяжело для них, что им не нравится? что такое «транзакция»? следует ли использовать Stateeless каждый раз как DAO вместо POJO?

Или, если у вас есть полезные ссылки для новичков, заранее.

ответ

2

Просто, чтобы эмулировать транзакцию, программе может потребоваться выполнить более одного шага. Например, банковская программа может переводить деньги с одной учетной записи на другую учетную запись. Он будет состоять из шагов, перечисленных в следующем псевдокоде:

begin transaction 
    checking first account 
    take money 
    send money 
    compute and save result 
    update history log 
commit transaction 

Либо все пять из этих шагов не должны завершить, или ни один из них вообще. В противном случае целостность данных теряется.

Транзакция может закончиться только два способами:

- с коммитом

- с откатом.

Когда транзакция совершается, изменения данных, сделанные ее заявлениями, сохраняются навсегда. Если оператор транзакции выходит из строя, транзакция откатывается, отменяя действие всех операторов транзакции.

И EJB делают все это для нас. :)

Я долгое время учился здесь http://www.coreservlets.com/.

UPDATE 1

Некоторые ссылки, связанные с EJB сделки

EJB's going deeper

Controlling transactions

Bean managed transactions

+0

Спасибо за ваш ответ. Итак, вы подразумеваете, что нам никогда не придется начинать, совершать или откатывать любую транзакцию вручную с помощью EJB? Если есть некоторые особые случаи, когда мы должны делать это вручную, можете ли вы привести пример или ссылку? Еще раз спасибо. – dwix

+0

Это зависит от многих вещей. Но ИМХО в 90% вы можете положиться на сам контейнер EJB. Мой ответ был обновлен, поэтому посмотрите на свои ссылки. –

+0

Я вижу, большое спасибо! – dwix