정규표현식 정규 표현식(Regular Expression)은 주어진 문자열 데이터에서 특정한 조건의 문자를 '검색'하는 과정을 처리 할 수 있도록 하는 규칙입니다. 정규표현식은 특정 언어에서만 사용되는 것이 아니라, 대부분의 언어에서 범용적으로 사용됩니다.예를들어 c[a-z]이라는 정규표현식은 알파벳 c로 시작하고 뒤에 알파벳 a부터 z까지의 문자 중 하나가 오는 문자를 검색합니다.ex) ca, cb, cc, cd ... cz 라는 문자는 찾습니다.ex) 하지만 c1 과 같이 다른 문자는 찾지 못합니다. 정규표현식을 작성하는 방법에 대해서는 관련된 도서나 인터넷상의 자료를 이용해서 공부해야 합니다.정규표현식을 정리해둔 사이트 http://zvon.org/comp/r/tut-Regexp.html#Pages..
글로벌 페치(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 혹은..
기획기업의 채용과정에서 지원자들을 가려내기 위한 시험인 '인적성검사'를 준비하는 취준생들에게 도움을 주는 웹사이트를 만들자. 개요인적성검사는 절대적인 점수보다는 현재 자신의 위치를 알아야 상대평가다. 하지만 문제집을 통한 점수는 자신의 위치를 알 수 없는 단점이 있다.취업 알선 사이트(잡코리아, 사람인 ...)등에서 인적성 검사를 할 수 있는 서비스를 웹을 통해서 지원하고 있다. 하지만 질 좋은 문제집의 문제들은 여전히 책을 통해서만 접해야 하는 한계가 있다. 기능시중에 출판된 인적성 문제집들을 풀이 한 후, 정답을 입력하면 채점을 자동으로 진행해준다.채점 이후에 누적된 데이터로, 다른 취준생들과 비교하여 백분위와 등수를 표시해준다. (상대적인 위치 가늠)현재 수험생의 취약한 부분이 어디인지 보여준다. ..
메소드를 람다식으로 변경하는 방법에 대해서는 이전 포스팅을 참고 해주시기 바랍니다. ☞ 자바의 람다식(Lambda) - 1. 람다식으로 표현하기 람다식 사용하기 - 함수형 인터페이스 람다식으로 바뀐 메소드를 사용하기 위해서는 함수형 인터페이스를 선언해야 합니다. 인터페이스를 함수형 인터페이스로 선언하기 위해서는 '단 하나의 추상메소드'만이 선언 되어 있어야 합니다. interface MyInterface{ abstract int myMethod(int a); } 위와 같이 선언된 인터페이스를 함수형 인터페이스라고 합니다. (인터페이스명 위에 @FunctionalInterface라고 선언하면 '단 하나의 추상메소드가 있는지' 조건을 검사해줍니다.)추상메소드에서 유심히 봐야 할 것은, 인자의 갯수와 타입 그..
람다식(Lambda expression) 함수형 프로그래밍의 등장으로 많은 언어들이 함수형 프로그래밍으로 만들어 지고 있고, 자바는 객체지향언어 이지만 이러한 시대적 흐름의 맞추어 유연하게 변하기 위해서 람다식을 도입하게 되었습니다. 함수형 프로그래밍이라는 이름에서 알 수 있듯이 람다식은 함수(메소드)의 변형으로 만들어 집니다. 람다식을 사용하게 되면 메소드가 '식(expression)'으로 바뀌게 되고 마치 하나의 '변수(값)' 처럼 사용 할 수 있게 됩니다. 기존의 메소드를 람다식으로 바꾸기 //기존 메소드 int myMetohd (int a, int b){ return a > b ? a: b; }반환타입과 메서드이름을 제거합니다.매개변수의 선언부 괄호()와 몸통{} 사이에 ->를 추가합니다. //람..
부모클래스(Entity) 설정 @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "dtype") public abstract class Parent { . . . }부모 Entity클래스 애노테이션 2가지를 추가합니다.@Inheritance(strategy = InheritanceType.JOINED) : 상속 관계를 맺고 있음을 명시해줍니다. 상속관계에 대한 설정은 JOINED전략, SINGLE_TABLE 전략, TABLE_PER_CLASS 전략 3가지가 있습니다. 각 전략마다 장단점이 있고 설정방법이 상이합니다. 여기서는 주로 쓰인다고 하는 조인전략으로 설명하도록 하겠습니다. 조인 전략을 사용하게 되면..
추상화(Abstraction) 객체 설계를 위해 추상화 작업은 중요한 것은 남기고, 불필요한 것은 제거하는 일입니다. (비즈니스 적으로 추상화가 잘 된 객체는 오히려 재사용성이 떨어지게 됩니다.) 추상? 개념은 쉽게 이해가 되나 용어의 혼선이 오는 초보개발자가 있을 겁니다. (물론 제가 그랬다는 겁니다. 그리고 저와 같은 고통을 받고 있던 친구들도 포함이죠.) 이러한 분들이 생각하는 추상은 '구체적'의 반댓말로 모호한(?)것이라는 개념으로 이해하고 있기 때문입니다. 실제 추상에 대한 사전적 정의는 아래와 같습니다.추상(抽象) : 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 사전적 의미를 생각하면서 객체의 추상화를 진행해봅시다. 앞서 예제로 설명한 '강아지, 사자, ..