JPA를 활용하여 Entity 생성 및 회원가입 로직을 구현한다.
엔티티 생성 및 파일 생성
1. 회원 Entity 생성 (UserEntity)
@Entity
@Getter
@Setter
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String username;
private String password;
private String role;
}
2. UserRepository 생성
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Integer> {
}
3. application.properties
spring.jpa.hibernate.ddl-auto=create
최초 실행시에만 테이블 생성을 위해 create로 설정.
이후에는 none으로 수정할 것.
회원가입 로직 흐름
회원가입 api 요청[FE] - JoinController - JoinService - UserRepository - DB
1. JoinDTO 생성
@Setter
@Getter
public class JoinDTO {
private String username;
private String password;
}
2. JoinController
@Controller
@ResponseBody
public class JoinController {
// 의존성 주입
private final JoinService joinService;
public JoinController(JoinService joinService) {
this.joinService = joinService;
}
@PostMapping("/join")
public String join(JoinDto joinDto) {
System.out.println(joinDto.getUsername());
joinService.joinProcess(joinDto);
return "joined successfully";
}
}
3. JoinService
@Service
public class JoinService {
private final UserRepository userRepository;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
public JoinService(UserRepository userRepository, BCryptPasswordEncoder bCryptPasswordEncoder) {
this.userRepository = userRepository;
this.bCryptPasswordEncoder = bCryptPasswordEncoder;
}
public void joinProcess(JoinDto joinDto) {
// 이미 존재하는 username인지 확인
Boolean isExist = userRepository.existsByUsername(joinDto.getUsername());
if (isExist) {
return;
}
// DB에 저장하기 위한 바구니 (UserEntity) 생성
UserEntity user = new UserEntity();
user.setUsername(joinDto.getUsername());
// 비밀번호는 암호화하여 저장!
user.setPassword(bCryptPasswordEncoder.encode(joinDto.getPassword()));
user.setRole("ROLE_ADMIN"); // 임시로 ADMIN 권한 부여
userRepository.save(user);
}
}
4. UserRepository
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Integer> {
Boolean existsByUsername(String username); // 해당 username을 가진 유저가 존재하는지
}