롬복은 자주 쓰면서도 항상 새로 설치할 때 마다 어떻게 했지.... 찾아보는 것중 하나라서 그냥 내 블로그에 메모 남기듯 남긴다. Lombok은 Table을 구조화한 Domain Class (Endtity or DTO, VO)에서 Getter / Setter Method와 toString, equals, hashCode 등의 Method를 어노테이션(@ Annotation)으로 사용할 수 있도록 해주는 Library이다. JDBC에서 VO, DTO등을 만들 때 손으로 직접 만들려고 한다면 Table Column이 50개만되도... Getter / Setter Code를 작성하는 것만 200 Line이 훌쩍 넘게 될 것이다. 그런면에서 Lombok은 Coding량을 줄여주는 거의 필수 Libr..
MyBatis Framework을 사용해서 개발하다 보면 SQL Mapping Parameter를 대체하는 방식으로 # (Hash) 와 $ (Dollar)를 사용하게 된다. 그런데 막상 그 차이에 대해서 명확하게 알지 못하고 그냥 남들이 썼던 Code를 보고 따라하다 보니... 그냥 사용하고 있다는 사람들을 종종 보게 된다. 개발자가 무심코 작성한 코드가 보안상 취약점이 되어 뒷통수를 때리는 경우가 발생 할 수 있으니 정확한 차이와 사용처에 대해서 짚고 넘어가고자 몇자 적어본다. MyBatis에서 '#' 과 '$'는 SQL Mapping에서 Parameter를 대체하는 방식에서 차이가 있다. 이 두 기호는 Parameter를 SQL Query에 삽입하는 데 사용되지만 보안적 측면과 성능적..
이번 포스팅에서는 앞서 만든 Project에 Model(DAO)를 추가하고 실제 DB에 저장된 데이터를 화면에 출력한다. 기본적으로 DB Table의 구조와 동일한 Model Class를 생성하고 해당 객체를 List 형태로 조회해서 사용하는 것을 기본 Base로 하겠다. 먼저 PostgreSQL에서 Sample Database로 사용할 DVDRental 의 ERD를 살펴보자. 이번 포스팅에서 사용할 Table은 'staff' Table 이다. 관리자 정보가 보관되는 Table로 ID 및 Password 등에 대한 정보를 담고 있는 Table 이다. Web Page에서의 Login 등의 처리에서 사용될 Data이다. 이번 포스팅에서는 단순하게 staff의 목록을 읽어와서 화면에 출..
오랜만에 Eclipse를 이용한 Spring Project를 만들어 보려고 하는데 src/main/webapp/WEB-INF/web.xml 파일이 계속 에러를 표시하고 있었다. cvc-id.3: A field of identity constraint 'web-app-servlet-name-uniquensess' matched element 'web-app', but this element does not have a simple type. 뭔가 유형이 안맞는다는 에러이다. 어이 없게도 이건 web-app Tag의 Schema Location 값의 java의 j를 대문자 J로 변경해 주면 된다. 위의 http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/..