개발자 채용 과제 수정해보기

2021. 10. 28. 18:49개인노트

반응형

이전에 특정회사에서 과제전형으로 주어진 걸 Mybatis로 셋팅하여서 확장자 체크를 수행하는 과제를 했었는데...

(아래주소)

https://lollaziest.tistory.com/168

 

개발자 채용 과제 도전 및(+) 후기(....)

최근 협업툴로 알게된 플X우 회사에 지원했었고 서류 합격 후 과제전형을 진행하게되었다. 코딩테스트의 경우는 따로 알고리즘이나 이런부분들을 생각하여 준비를 했었지만 보통 과제의 경우

lollaziest.tistory.com

그걸 피드백받은 방식 + 서비스회사에서 주로 사용하는 JPA기본 을 사용하여 변경해보았다.

변경해보고 느낀점은..음 날 왜 안뽑았는지 알 듯했다^^; 많이 부족한 설계능력+Mybatis로 인한 난잡한 코드들... 부끄럽다고 느꼈지만 그래도 그러한걸 다 남겨둬야 나중에 티스토리 블로그를 살펴보다가 이런때가 있었지 할듯하여 남기기로했다.

확장자를 갈아끼우는 형태로도 가능하게 하려고 몇개의 테이블+메뉴코드 테이블이 엮여있는 테이블이 아닌 기능만을 위한 심플한 테이블을 생성하는 Entity를 만들었다. 처음에는 Y,N값으로 구분하려고 했으나 Enum이 그런부분에 있어서 강점이 있다고해서 바꿨다.

기본적인 Extension Entity생성

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.NotBlank;

import org.hibernate.validator.constraints.Length;

import com.test.flow.file.type.ExtensionType;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Extension {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	Long id;
	@NotBlank // not null
	@Length(max = 20)
	String extension; //확장자값
	
	@Enumerated(EnumType.STRING)
	ExtensionType fixExtension; // Y,N 고정확장자여부 체크값
	
}

간단한 Enum생성

public enum ExtensionType {
	
	FIX,CUSTOM

}

그리고 그걸 사용할 JpaRepository 생성

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.test.flow.file.Entity.Extension;
import com.test.flow.file.type.ExtensionType;

@Repository //생략가능
public interface ExtensionRepository extends JpaRepository<Extension, Long>{

	List<Extension> findAllByFixExtension(ExtensionType fix);

	void deleteByExtension(String extension);

	Long countByFixExtension(ExtensionType custom);

	Extension findByExtension(String extension);

}

 

위와 같이 수행할 경우

JPQL로 심플하게 작성한 쿼리 + CRUD로 매우 심플하게 돌아가는 로직이 완성되었다.

나머지의 상세변경등에 대한 코드들은 깃허브에서 확인가능하다.. 이렇게 쉽게 가능한 부분들을 참 어렵게도 짰구나라는 생각이 절로 들었다;;

https://github.com/helloworldkim/extensiontest

 

GitHub - helloworldkim/extensiontest: 확장자 체크 로직 구현 관련 프로젝트

확장자 체크 로직 구현 관련 프로젝트. Contribute to helloworldkim/extensiontest development by creating an account on GitHub.

github.com

 

반응형