public class BankAccount { private int accountNumber; private double balance; // Getter and Setter methods public void deposit(double amount) { balance += amount; } public void withdraw(double amount) { if (balance >= amount) { balance -= amount; } } public void transfer(BankAccount destination, double amount) { try { this.withdraw(amount); destination.deposit(amount); System.out.println("Transfer successful!"); } catch (Exception e) { System.out.println("Transfer failed!"); throw e; } } } <transaction name="tx" nontransactional-read="false" nontransactional-write="false" isolation="read-committed"/> import javax.jdo.JDOHelper; import javax.jdo.PersistenceManager; import javax.jdo.Transaction; public class Main { public static void main(String[] args) { PersistenceManager pm = JDOHelper.getPersistenceManagerFactory("jdoconfig.xml").getPersistenceManager(); try { Transaction tx = pm.currentTransaction(); tx.begin(); BankAccount source = pm.getObjectById(BankAccount.class, 1); BankAccount destination = pm.getObjectById(BankAccount.class, 2); source.transfer(destination, 100.0); tx.commit(); System.out.println("Transaction committed successfully!"); } catch (Exception e) { System.out.println("Transaction failed!"); } finally { if (tx.isActive()) { tx.rollback(); } pm.close(); } } }


上一篇:
下一篇:
切换中文