@OnDelete(action = OnDeleteAction.CASCADE) 설정 엔티티를 삭제할 때, FK로 연관 되어져 있는 엔티티가 있다면 삭제 시에 Constrain 에러가 발생한다. 해당 되는 엔티티를 직접 삭제 하는 방법도 생각해봤지만, (Result - Question - BookContent - Book) 이런식으로 연쇄적으로 연관 되어 있는 엔티티를 모두 삭제하는 것은 비효율적이라고 생각되어서 DB 테이블 상의 CASCADE 옵션을 고려 해봤다. 그러던 중, 테이블을 직접 설정하지 않고 JPA로만 설정 하는 방법을 찾으보니 역시 가능했다!! @OnDelete 설정으로 마치 DB 테이블상의 옵션처럼 FK로 연관되어져 있는 열을 삭제할때 같이 삭제되도록 설정이 가능했다. @ManyToOne(..
URL 설계 URL naming convention을 찾다가 최근에는 RESTful 개념을 적용하여서 URL 설계를 하는 것을 알게 되었다. 확실히 세련된 웹에서는 쿼리 스트링을 남발 하기 보다는 깔끔하게 슬래쉬로 현재 페이지가 어떤 페이지인지 명시하는 것을 알 수 있었는데, 그러한 트렌드가 RESTful 개념에서 왔다는 것을 알 수 있었다. RESTful 하게 URL 설계해보기 기존 개발자들에게도 완벽하게 URL 설계를 완벽하게 한다는 것이 쉽지 않다는 것을 알게 되었다. 첫 설계이니 만큼 욕심 내지 말고 아래의 원칙만을 지키기로 정했다. CRUD키워드를 URL이나 쿼리 스트링에 명시하지 않는다. 같은 URL이라도 요청 메소드를 달리해서 구분한다.기존 변경 /book/list /books /book/d..
JpaRepository JpaRepository 인터페이스를 상속 받는 것만으로도 웬만한 CRUD는 바로 사용 가능 했다. 아래와 같이 설정 한것 만으로도 save(), findAll(), delete(), exists() 등등의 메소드가 바로 사용가능했다. (굳이 오버라이딩 하듯이 메소드들을 명시할 필요도 없었다.) JpaRepository 인터페이스는 스프링 데이터의 CrudRepository를 상속받았기 때문에 CrudRepositry에 정의되어 있는 기능도 사용가능 했다. public interface QuestionRepository extends JpaRepository { } 쿼리 메소드 JPA의 Repositoy안에 find와 By 키워드를 적절히 섞은 쿼리 메소드만 선언하면 대부분의 조..
글로벌 페치(fetch) 전략 설정글로벌 페치의 default 설정이 모두 LAZY(지연로딩)으로 되있는 줄 알았으나 연관관계 매핑 방식에 따라 default 설정이 다른 것을 알게 되었다. @ManyToOne, @OneToOne : 기본설정이 즉시로딩 (EAGER)@OneToMany, @ManyToMany : 기본설정이 지연로딩 (LAZY)일단 @ManyToOne과 @OneToOne 에게 지연로딩을 하도록 옵션을 명시했다. 이 후의 즉시로딩이 꼭 필요한 경우에 즉시 로딩으로 바꿀 예정이다."김영한 저 - 자바 ORM 표준 JPA 프로그래밍 p305 참고" @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "category_id", nullable = fal..
ERD Entity(엔티티)- 문제 관련 Entity(엔티티)Question (문제) : 가장 중심이 되는 엔티티로 문제에 대한 정보를 담는다. 인성문제와 적성문제의 문제 유형이 달라 추상클래스로 구현하고, 인성문제와 적성문제가 이를 상속하도록 구현하였다.AptitudeQuestion(적성문제) : 인성문제와 구별되는 적성문제만을 담는 엔티티다. 맞은 횟수와 제출한 횟수는 각 문제의 정답률을 계산하기 위해서 추가되었다. PersonalityQuestion(인성문제) : 적성문제와 구별되는 인성문제만을 담는 엔티티다. 하지만 인성문제는 독특한 문제 유형이 너무 많아 설계가 어렵고 그에 비해 인성문제에 대한 중요도가 떨어지는 점을 고려해서, 추후 개발할 예정이다ContentFile : 적성문제를 PDF 혹은..
기획기업의 채용과정에서 지원자들을 가려내기 위한 시험인 '인적성검사'를 준비하는 취준생들에게 도움을 주는 웹사이트를 만들자. 개요인적성검사는 절대적인 점수보다는 현재 자신의 위치를 알아야 상대평가다. 하지만 문제집을 통한 점수는 자신의 위치를 알 수 없는 단점이 있다.취업 알선 사이트(잡코리아, 사람인 ...)등에서 인적성 검사를 할 수 있는 서비스를 웹을 통해서 지원하고 있다. 하지만 질 좋은 문제집의 문제들은 여전히 책을 통해서만 접해야 하는 한계가 있다. 기능시중에 출판된 인적성 문제집들을 풀이 한 후, 정답을 입력하면 채점을 자동으로 진행해준다.채점 이후에 누적된 데이터로, 다른 취준생들과 비교하여 백분위와 등수를 표시해준다. (상대적인 위치 가늠)현재 수험생의 취약한 부분이 어디인지 보여준다. ..