summaryrefslogtreecommitdiff
path: root/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-05-16 21:18:32 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-05-16 21:18:32 +0530
commite51834c899ff20781295410961934eb06239385c (patch)
tree78f0058914063e37cbd6812d204e4f84efd0ab90 /spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account
parentb1d598a2f02819bc127d0d3522dc7ac91b4dee65 (diff)
Added spring-boot sample applications
Diffstat (limited to 'spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account')
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java53
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java28
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java13
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java33
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java7
5 files changed, 134 insertions, 0 deletions
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java
new file mode 100644
index 0000000..b5fe811
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/Account.java
@@ -0,0 +1,53 @@
+package com.example.spring.bank.account;
+
+import java.math.BigDecimal;
+
+import com.example.spring.bank.customer.Customer;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+
+@Entity
+public class Account {
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private Long accountNumber;
+
+ private BigDecimal balance;
+
+ public Account() {
+ super();
+ }
+
+ public Account(BigDecimal balance) {
+ super();
+ this.balance = balance;
+ }
+
+ @ManyToOne
+ private Customer customer;
+
+ public Customer getCustomer() {
+ return customer;
+ }
+
+ public void setCustomer(Customer customer) {
+ this.customer = customer;
+ }
+
+ public Long getAccountNumber() {
+ return accountNumber;
+ }
+ public void setAccountNumber(Long accountNumber) {
+ this.accountNumber = accountNumber;
+ }
+ public BigDecimal getBalance() {
+ return balance;
+ }
+ public void setBalance(BigDecimal balance) {
+ this.balance = balance;
+ }
+} \ No newline at end of file
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java
new file mode 100644
index 0000000..dc017dd
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountController.java
@@ -0,0 +1,28 @@
+package com.example.spring.bank.account;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/account")
+public class AccountController {
+
+ @Autowired
+ private AccountManager accountManager;
+
+ @GetMapping("/{accountNumber}")
+ public Account getAccount(@PathVariable Long accountNumber) {
+ // TODO: Check null returns.
+ Account account = accountManager.findByAccountNumber(accountNumber).get();
+ return account;
+ }
+
+ @PostMapping("/")
+ public Account createAccount(Account account) {
+ return accountManager.create(account);
+ }
+} \ No newline at end of file
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java
new file mode 100644
index 0000000..14dfa0c
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManager.java
@@ -0,0 +1,13 @@
+package com.example.spring.bank.account;
+
+import java.util.Optional;
+
+public interface AccountManager {
+
+ public Account create(Account account);
+
+ public Optional<Account> findByAccountNumber(Long accountNumber);
+ public Iterable<Account> findAll();
+
+ // Other methods
+}
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java
new file mode 100644
index 0000000..2227469
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountManagerImpl.java
@@ -0,0 +1,33 @@
+package com.example.spring.bank.account;
+
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import jakarta.transaction.Transactional;
+
+@Service
+public class AccountManagerImpl implements AccountManager {
+
+ @Autowired
+ private AccountRepository accountRepository;
+
+ @Override
+ @Transactional
+ public Account create(Account account) {
+ return accountRepository.save(account);
+ }
+
+ @Override
+ public Optional<Account> findByAccountNumber(Long accountNumber) {
+ return accountRepository.findById(accountNumber);
+ }
+
+ @Override
+ public Iterable<Account> findAll() {
+ return accountRepository.findAll();
+ }
+
+ // Other methods
+} \ No newline at end of file
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java
new file mode 100644
index 0000000..086f828
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/account/AccountRepository.java
@@ -0,0 +1,7 @@
+package com.example.spring.bank.account;
+
+import org.springframework.data.repository.ListCrudRepository;
+
+public interface AccountRepository extends ListCrudRepository<Account, Long> {
+
+} \ No newline at end of file