diff options
| author | Kamal Wickramanayake <kamal@inbox.lk> | 2026-05-16 21:18:32 +0530 |
|---|---|---|
| committer | Kamal Wickramanayake <kamal@inbox.lk> | 2026-05-16 21:18:32 +0530 |
| commit | e51834c899ff20781295410961934eb06239385c (patch) | |
| tree | 78f0058914063e37cbd6812d204e4f84efd0ab90 /spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer | |
| parent | b1d598a2f02819bc127d0d3522dc7ac91b4dee65 (diff) | |
Added spring-boot sample applications
Diffstat (limited to 'spring-boot/04-bank-jpa-rest/src/main/java/com/example/spring/bank/customer')
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 |
