개발
-
jpa join시 join column과 join table 구분개발/JAVA 2019. 7. 9. 11:17
one to many 관계 테이블 조인을 하는데 40만 * 천만 건이상의 데이터인데다가 정렬에 거리계산 내장함수를 사용하다보니 10여초가 걸린다. 때문에 조금이라도 속도개선을 위해 이것저것을 하다보니 조인에 있어 join table과 join column을 쓸 수 있는데 둘 차이와 어느것이 성능이 좋은지 궁금해 찾아보았다. 결론은 2 테이블에서 조회를 할 때는 join column이 좋은 것 같다. 결정을 내리게 된 스택오버플로우의 답변이다. @JoinTable stores the id of both the table into a separate table while @JoinColumn stores id of the another table in a new column. @JoinTable : This..
-
이름 규칙개발/JAVA 2019. 7. 8. 23:11
어느정도 규칙성을 갖고 있지만 정해져 있지 않고 조금씩 다르기도 하다. 때문에 이름을 정할때 헷갈릴때가 있어 보편적인 방법들로 나름 정리를 해 본다. 클래스 이름은 PascalCasing으로 각 단어의 시작은 대문자로 한다. 예를들어 헬로 클래스는 Hello 헬로서비스는 HelloService로 한다. 메소드 이름은 CamelCasing로 첫번째는 소문자, 다음단어시작은 대문자로 한다. 예를들어 딜리트 메소드는 delete() 헬로워드 메소드는 helloWord() 다. 다음으로는 변수와 상수가 있다. 변수는 camelCasing으로 첫번째는 소문자다음부터는 대문자로 쓴다. 예를들어 String word=""; int memberCount =0; 이 있다.(예전에는 스네이크 표기법으로 snake_word..
-
개인 개발용 aws 생성 및 ftp 접속개발/AWS & 서버 2019. 6. 18. 17:49
aws 가입을 한 후 우측 상단 위치를 가장 가까운 서울로 변경 컴퓨팅의 EC2를 클릭한다 -인스턴스 시작 - 두번째인 Amazon Linux AMI 2018.03.0 을 선택하겠다(우분투,윈도 등 다양하게 선택할 수 있다) - 디폴트인 t2.micro - 검토 및 시작 - 시작하기를 누르면 이렇게 뜨는데 새 키 페어 생성을 누르고 키페어 이름을 입력하고 다운받고 시작한다. 이 키 페어로 서버 접속을 하기 때문에 잘 관리해두며 깃 등에 실수로 올리지 않도록 유의한다. 완료하였으면 인스턴스 보기를 누르거나 EC2 좌측의 인스턴스를 클릭하여 생성된 서버를 확인한다. 접속은 인스턴스 프로젝트에 우클릭 or 상단의 연결을 눌러보면 접속정보가 나와있다. 윈도우 같은 경우는 cmd 맥이나 리눅스는 터미널을 사용하면..
-
java 형변환개발/JAVA 2019. 5. 9. 09:43
지금도 가끔 형변환을 할 때 검색을 하곤 하는데 정리를 해보려 한다. int to String String str = Integer.toString(i); String str = "" + i; String to int int i = Integer.parseInt(str); int i = Integer.valueOf(str).intValue(); double to String String str = Double.toString(d); long to String String str = Long.toString(l); float to String String str = Float.toString(f); String to double double d = Double.valueOf(str).doubleValue(..
-
spring boot 엑셀 다운로드와 파일 다운로드시 자동열림 문제개발/Web 2019. 4. 12. 09:40
엑셀 함수작업을 위해 디자인 한 엑셀 템플릿에 데이터를 넣어 다운로드하는 엑셀 다운로드 작업을 했다. 때문에 poi+jxls를 사용하였고, 컨트롤러와 엑셀 생성 메서드를 통해 작업을 이루어졌다. 헤맸던 것은 예제들은 maven build인점. 이부분은 mavenrepository 사이트에서 찾아 gradle로 변형시켜 채워넣으면 해결. 두번째로는 resource에 있는 file을 불러와야하는데 이 경로를 잡는데 어려움이 있었다. 결론은 ClassPathResource() 를 사용해 resource까지 접근. 나머지 하위경로를 잡아주면 된다. File file = new ClassPathResource("excel/"+templateFile).getFile(); 마지막으로 ajax로는 서버에서 엑셀다운 이..
-
map 데이터 전체 읽으며 sql 처리시 에러 java.util.ConcurrentModificationException: null개발/JAVA 2019. 4. 8. 01:28
map 형태로 전달된 값들 중 key을 확인해 조건에 맞는 것을 db insert 하는 작업을 코딩했다. 그러나 해당 조건 만족으로 db작업 후 다음부터 java.util.ConcurrentModificationException: null 와 같은 에러가 뜨며 작업이 중단되었다. 구글링 하여 찾아본 글들은 조금 연관이 없어 보였다. 그리고 돌고돌아 작업 조건을 만족하는 key값을 따로 arrayList에 담은 후 다시 arraylist를 돌며 db insert를 하니 정상적으로 처리되었다. 작업중 디비 인서트를 하며 작업이 꼬여서 생긴 문제로 파악된다.
-
MySQL 프로시저 PROCEDURE 생성(CASE문, IF문)+ 추가 FUNCTION개발/MySQL 2019. 4. 2. 19:30
DB에서 작업을 수행하는 함수나 프로시저 생성을 하게 되었다. 다뤘던 프로젝트에서 생성된 함수를 사용 한 것을 보았기 때문에 처음 생각한 것은 함수였으나 프로시저의 속도가 빠르고 구조와 기능에 차이가 없다는 글을 보고 프로시저로 선택했다. 작업후기: 사용법에서 큰 차이가 있다. 프로시저의 호출은 CALL 프로시저 만 되지만 함수의 경우 SQL문 내에서도 사용이 가능하다. 예를들어 처리된 ID를 불러오는 함수 A(id_before) 이 있다면 SELECT * FROM TABLE ID = A(id_before) 이런식으로 구문에서 바로 함수를 호출하여 사용이 가능 한 것이다. 내가 필요한 기능은 이 부분이었기 때문에 함수를 추가로 만들었다. 함수와 프로시저에 대해 간단히 알아 본 결과 둘의 구조는 동일하나(..
-
String to hex을 hex byte array개발/JAVA 2019. 3. 22. 11:12
소켓통신은 byte형태로 송신하고 수신한다. 따라서 보낼 데이터는 바이트 형태로 인코딩을 하게된다. 1 byte = 8 bit, 1 bit 는 0,1 2진수 인 것을 모두 잘 알 것이다. 따라서 1 byte는 8bit 이므로 2^8으로 이루어져 있고 10진수로는 0~255, 16진수로는 0~ff까지의 값을 가진다. 흔히 문자를 바이트로 16진수의 2자리 값으로 나타내며 Apple을 예를들면 String str = "Apple"; // 한 글자씩 헥사(Hex)로 출력 System.out.println(stringToHex(str)); // 출력 결과: 41 70 70 6C 65 // 접두사 붙여서 출력 System.out.println(stringToHex0x(str)); // 출력 결과: 0x41 0x7..