controller
package com.zerobase.Account.controller;
import com.zerobase.Account.domain.Account;
import com.zerobase.Account.service.AccountService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
public class AccountController {
private final AccountService accountService;
@GetMapping("/create-account")
public String createAccount() {
accountService.createAccount();
return "ok";
}
@GetMapping("/account/{accountId}")
public Account findAccount(@PathVariable Long accountId) {
Account account = accountService.getAccount(accountId);
return account;
}
}
domain
package com.zerobase.Account.domain;
import lombok.*;
import javax.persistence.*;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
public class Account {
@Id
@GeneratedValue
private Long id;
private String accountNumber;
@Enumerated(EnumType.STRING)
private AccountStatus accountStatus;
}
package com.zerobase.Account.domain;
public enum AccountStatus {
IN_USE,
UNREGISTERED
}
repository
package com.zerobase.Account.repository;
import com.zerobase.Account.domain.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface AccountRepository extends JpaRepository<Account, Long> {
}
service
package com.zerobase.Account.service;
import com.zerobase.Account.domain.Account;
import com.zerobase.Account.domain.AccountStatus;
import com.zerobase.Account.repository.AccountRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@Service
@RequiredArgsConstructor
public class AccountService {
private final AccountRepository accountRepository;
@Transactional
public void createAccount() {
Account account = Account.builder()
.accountNumber("40000")
.accountStatus(AccountStatus.IN_USE)
.build();
accountRepository.save(account);
}
@Transactional
public Account getAccount(Long id) {
return accountRepository.findById(id).get();
}
}