summaryrefslogtreecommitdiff
path: root/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer
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/customer
parentb1d598a2f02819bc127d0d3522dc7ac91b4dee65 (diff)
Added spring-boot sample applications
Diffstat (limited to 'spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer')
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/Customer.java66
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManager.java17
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManagerImpl.java45
-rw-r--r--spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerRepository.java7
4 files changed, 135 insertions, 0 deletions
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/Customer.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/Customer.java
new file mode 100644
index 0000000..43bf0a6
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/Customer.java
@@ -0,0 +1,66 @@
+package com.example.spring.bank.customer;
+
+import java.util.List;
+
+import com.example.spring.bank.account.Account;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+
+
+
+@Entity
+public class Customer {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private Long id;
+
+ private String name;
+
+ public Customer() {
+ super();
+ }
+
+ public Customer(String name) {
+ super();
+ this.name = name;
+ }
+
+ @OneToMany(mappedBy = "customer")
+// @OneToMany
+ private List<Account> accounts;
+
+ public List<Account> getAccounts() {
+ return accounts;
+ }
+
+ public void setAccounts(List<Account> accounts) {
+ this.accounts = accounts;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Customer [id=" + id + ", name=" + name + "]";
+ }
+
+}
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManager.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManager.java
new file mode 100644
index 0000000..1560672
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManager.java
@@ -0,0 +1,17 @@
+package com.example.spring.bank.customer;
+
+import java.util.Optional;
+
+import com.example.spring.bank.account.Account;
+
+public interface CustomerManager {
+
+ public Customer create(Customer customer);
+
+ public Optional<Customer> findById(Long customerId);
+ public Iterable<Customer> findAll();
+
+ public void addAccount(Customer customer, Account account);
+
+ // Other methods
+}
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManagerImpl.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManagerImpl.java
new file mode 100644
index 0000000..05b3fdc
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerManagerImpl.java
@@ -0,0 +1,45 @@
+package com.example.spring.bank.customer;
+
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.example.spring.bank.account.Account;
+
+import jakarta.transaction.Transactional;
+
+@Service
+public class CustomerManagerImpl implements CustomerManager {
+
+ @Autowired
+ private CustomerRepository customerRepository;
+
+ @Override
+ @Transactional
+ public Customer create(Customer customer) {
+ return customerRepository.save(customer);
+ }
+
+ @Override
+ public Optional<Customer> findById(Long customerId) {
+ return customerRepository.findById(customerId);
+ }
+
+ @Override
+ public Iterable<Customer> findAll() {
+ return customerRepository.findAll();
+ }
+
+ @Transactional
+ @Override
+ public void addAccount(Customer customer, Account account) {
+ // May not work is the customer is detached.
+ // customer.getAccounts().add(account);
+
+ // Access the Customer again - so that it would not be a detached entity.
+ customerRepository.findById(customer.getId()).get().getAccounts().add(account);
+ }
+
+ // Other methods
+} \ No newline at end of file
diff --git a/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerRepository.java b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerRepository.java
new file mode 100644
index 0000000..8695d66
--- /dev/null
+++ b/spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer/CustomerRepository.java
@@ -0,0 +1,7 @@
+package com.example.spring.bank.customer;
+
+import org.springframework.data.repository.ListCrudRepository;
+
+public interface CustomerRepository extends ListCrudRepository<Customer, Long> {
+
+} \ No newline at end of file