몇년전만 해도 기본 DataType으로 Map과 VO가 혼재되어 사용하고 있었는데 점차 VO로 굳혀져 가고 있는듯하다. 서비스당 VO도 하나씩만 작성해서 사용하면 참 좋겠지만 계층간 아키텍처를 명확하게 하기 위해 DTO(data transfer object)와 Entity로 구분을 해서 사용을 한다. DTO는 프로세스간의 데이터를 전달하는 객체이고 Entity는 Persistent 영역과의 통신을 위해 사용되는 객체라고 생각하면 된다. 즉 화면에서 보낸 요청에 실린 Parameter를 DTO에 담아서 계층간 이동을 하고 쿼리에 바인딩될때, 쿼리로부터 결과를 받은것은 Entity에 담는다. 이를 또 응답으로 주기 위해서 값을 DTO로 변환을 하여 담는다. 이를 위해 DTO -> Entity, Entity ..
Base64란? 컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다. - 참조 : 위키백과 JAVA 8부터는 표준 API로 Base64 기능을 제공한다. java.util.Base64 유틸리티를 통해 사용할 수 있다. public class Base64EncodingTest { public static void main(String[] args) { String flatText = "oing is pretty"; String urlSample = "http://www.naver.com"; //===== en..
Mobile기기에서 접속을 했는지 PC에서 접속을 했는지에 따라 화면을 달리 보여줘야 하는 상황이 있다. 이럴 경우 여러가지 방법이 있지만 JAVA 단에서 할수 있는 가장 간단한 방법에 대해서 기술하고자 한다. private static final String IS_MOBILE = "MOBI"; private static final String IS_PC = "PC"; public static String isDevice(HttpServletRequest req) { String userAgent = req.getHeader("User-Agent").toUpperCase(); if(userAgent.indexOf(IS_MOBILE) > -1) { return IS_MOBILE; } else { retur..
엑셀을 업로드할때 다음과 같은 오류가 발생하는 경우가 있다. [ERROR][com.oingdaddy.ExcelUploader.excelUploader:line116] - Excel import exception : Invalid header signature; read 0x736146202D2D213C, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document, {} org.apache.poi.poifs.filesystem.NotOLE2FileException: Invalid header signature; read 0x736146202D2D213C, expected 0xE11AB1A1E011CFD0 - Your fil..

프로젝트를 import를 했더니 다음과 같은 오류가 발생하였다. javax.xml.bind.* 하위에 있는 JAXBContext, JAXBException, Unmarshaller 이런 애들을 찾을수가 없다고 나온다. 원인을 파악해보니 import 한 프로젝트는 JDK 1.8로 진행을 했는데 내 로컬 개발환경(STS)에서는 JDK 11 버전을 사용하고 있어서 위와 같은 오류가 발생을 한 것이다. 이게 다른데 왜 오류가 발생하냐면 JDK 11에서는 jaxb dependency가 사라졌기 때문이다. 즉 JDK 1.8이 설치되어 있으면 jaxb를 따로 종속성 추가를 해주지 않아도 되었었는데 JDK 11 부터는 별도로 넣어줘야 한다는 것이다. 조치는 다음과 같이 JDK 11으로 되어 있는 설정을 바꿔주면 된다...

내가 새로운 JDK를 받아서 JAVA_HOME 설정을 변경했는데 제대로 반영이 안된 경우가 몇번 있었다. 물론 생각해보면 다 내 실수였다. 어떤 실수들을 저질렀나 한번 추억을 곱씹어 보자. 1. Path 설정 실수 이게 아마 가장 흔한 일이라고 생각이 된다. Windows에서 JAVA_HOME을 설정하기 위해서는 보통은 JAVA_HOME이라는 변수를 만들고 그곳에 설치한 Java 디렉토리를 매핑시킨다. 이런식으로 하위에 bin, conf, lib 등등의 폴더를 가진 디렉토리를 보통 JAVA_HOME으로 잡는다. 그리고 시스템 변수 중 Path 에서는 JAVA_HOME을 등록을 해줘야 한다. 위와 같이 %JAVA_HOME%\bin 으로 설정을 정확하게 해줘야 한다. %JAVA_HOME%bin, %JAVA_..

모든게 Open이 되어가는 세상이다. 공짜는 누구나 다 좋아하지만 왜 내머리만 이렇게 없어지고 있는지.. 불공평하다. 공짜를 좋아하면 머리가 벗겨진다는 말을 한 희대의 사기꾼을 잡아서 족치고 싶다. 잡설은 그만 하고 말로만 많이 들어봤던 OpenJDK를 설치해 보도록 하자. 여러가지 OpenJDK 구현체가 있지만 필자가 다룰 내용은 Azul Zulu라는 OpenJDK 구현체이다. Zulu를 어떻게 받고 어떻게 설치하는지 살펴보도록 하자. OpenJDK Zulu 설치 Java Download | Java 8, Java 11, Java 13 - Linux, Windows & macOS Download Java Builds of OpenJDK 8, 11, 13 & 15. Azul Zulu Builds of O..
File과 관련된 백엔드단 테스트가 필요한 경우가 종종 있다. File을 MultipartFile 형식으로 바꾸어서 처리를 해줘야 하는 경우가 있는데 어떻게 해야 하는지 난감하다. 그럴때는 아래와 같은 로직을 추가함으로써 MultipartFile을 얻을 수 있다. File file = new File("C:\\temp\\test.xlsx"); DiskFileItem fileItem = new DiskFileItem("file", Files.probeContentType(file.toPath()), false, file.getName(), (int) file.length() , file.getParentFile()); InputStream input = new FileInputStream(file); Ou..