нта CustomerEJB. br/>
2.3 TxControllerEJB
Сесійна компонент TxControllerEJB обробляє банківські транзакції. На додаток до своїх методів get (getTxsOfAccount і getDetails) компонент TxControllerEJB має кілька методів, які змінюють баланси банківських рахунків:
- withdraw;
- deposit;
makeCharge;
makePayment;
transferFunds.
Ці методи звертаються до компоненту управління даними AccountEJB для перевірки типу рахунку та встановлення нового балансу. Методи withdraw і deposit призначені для некредитних рахунків, в той час як методи makeCharge і makePayment призначені для кредитних рахунків. Якщо аргумент type методу не відповідає рахунку, ці методи генерують IllegalAccountTypeException. Якщо операція витрачання грошей може призвести до негативного балансу, метод withdraw генерує InsufficientFundsException. Якщо сума зобов'язання перевищує величину кредитної лінії для рахунку, метод makeCharge генерує InsufficientCreditException. p align="justify"> Метод transferFunds також перевіряє тип рахунку і новий баланс; якщо необхідно, він генерує ті ж самі виняткові ситуації, що і методи withdraw і makeCharge. Метод transferFunds віднімає з балансу одного примірника AccountEJB і додає таку ж кількість до іншого екземпляра. Оскільки обидва цих кроку повинні завершитися, метод transferFunds має атрибут транзакції Required. Якщо який-небудь з кроків закінчується невдало, відбувається відкат всієї операції, і баланси залишаються незміненими. br/>
3 Компоненти управління даними
Для кожного бізнес-суб'єкта, представленого в нашому простому банку, додаток Duke's Bank має відповідний компонент управління даними:
- AccountEJB;
- CustomerEJB;
TxEJB.
Метою цих компонентів є забезпечення об'єктного подання таких таблиць бази даних: account, customer і tx. Для кожного стовпця в таблиці відповідний компонент управління даними має змінну примірника. Оскільки вони використовують керовану компонентом персистенцию, компоненти управління даними містять SQL-оператори, які звертаються до бази даних. Наприклад, метод create компонента управління даними CustomerEJB викликає SQL-команду INSERT. p align="justify"> На відміну від сесійних компонентів компоненти управління даними не перевіряють параметри методів (за винятком параметра з первинним ключем у ejbCreate). Під час фази проектування ми вирішили, що сесійні компоненти повинні перевіряти параметри і генерувати виняткові ситуації, такі як CustomerNotInAccountException і IllegalAccountTypeException. Отже, якщо яке-небудь...