java 30

HttpResponse와 Unirest를 이용한 외부 데이터 요청

최근 개발하면서 외부 API를 이용해서 데이터를 요청해야할 일이 생기게 되어 HttpResponse와 Unirest를 사용해서 개발을 해보았는데, 오늘은 그 내용을 정리해보려고 한다. 일단, 회사에서 개발한 내용이였고, 기본적인 maven에 dependency설정은 잡혀있는 상태로 개발을 했는데, Spring으로 개발을 하고 maven을 이용해서 프로젝트 관리를 하고있다면 pom.xml에 다음 내용들을 추가해주면 된다. com.mashape.unirest unirest-java 1.4.9 org.apache.httpcomponents httpasyncclient 4.1.3 org.apache.httpcomponents httpmime 4.5.8 org.apache.httpcomponents httpcor..

JAVA 2020.06.17

JAVA 문자열 자르기 2 (substring 사용법)

문자열을 잘라서 사용하는 방법에는 여러가지가 있지만, 그 중에서 접근성이 높은건 Split이나 substring이 아닐까 싶다. 저번글에서는 split을 정리했으니까, 오늘은 substring을 정리해보고자 한다. 일단 API문서에는 substirng이 이렇게 정리되어있다. 대충 String을 받아서 String을 리턴한다고 설명하는 것 같다. 글로 보는것보다는 코드로 보는게 빠를 것 같아서 간단한 예제 소스를 준비했다. 예제소스는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 public void subStr() { String time = "2020-05-01 23:59:59"; //substring의 첫 번째 인자는 시작점, 두 번쨰 인자는 종점(마지막) 입니다. String result..

JAVA 2020.06.02

JPA annotation @DynamicUpdate?

오늘은 테이블에 대한 Entity를 만들 떄 항상 선언해 주었던 @DynamicUpdate에 대해서 정리해본다. 기본적으로 @DynamicUpdate는 Spring JPA에서 제공하는 기능이다. (JPA, Hibernate, Spring JPA가 같은 의미는 아님) 개발을 하면서 @DynamicUpdate 어노테이션이 무슨역할을 하는지도 모른채 대부분의 Entity에 선언해줬었는데, 최근들어 왜 선언해야하는지 궁금증이 생겨서 조금 조사해봤다, 간단하게 정리하면 다음과 같다. JPA는 서버가 실행될 때 CURD에 관한 SQL문을 캐싱해놓는데, 여기서 UPDATE문에 UPDATE 대상이 모든 열로 선언되어 있다는 거다, 컬럼(필드)가 20개라면 20개 컬럼에 대한 업데이트문이 선언되어 있는 것이다. (upd..

SPRING FRAMEWORK 2020.05.07

JPA의 엔티티에서의 카운팅(@Formula)

JPA를 이용해 개발하다보면 모호한 부분이 많은 것 같은데 대표적인게 JPA, Hibernate, Spring JPA인 것 같다. 여기서 정리 할 내용은 아니지만 간단히 설명하면 JPA는 기술명세, Hibernate는 인터페이스, Spring JPA는 Hibernate를 스프링 프레임워크에서 쉽게 사용할 수 있게 모듈화? 해놓은 것이라는데 이게 무슨소린지 아직도 좀 어렵다. 이 이야기를 하는 이유는 오늘 설명한 @Formula는 Hibernate의 기능이기 때문이다. 현재 내가 개발하면서 @Formula를 사용하는 경우는 조건절로 사용하거나, 집계된 데이터가 필요할 때 사용하고 있는데, 이외의 경우에도 사용할 수 있는지는 파악해보고 있다. 먼저 @Formula에 대해서 간단한 설명을 하자면, 데이터베이스..

SPRING FRAMEWORK 2020.05.03

JAVA 문자열 자르기(split)

오늘은 문자열 시리즈 두번쨰인 split에 대해서 간단명료하게 정리해보고자한다. 먼저 split 메서드는 String형의 자료를 특정조건으로 잘라준 뒤 배열로 리턴해주는 기능을 한다. 사용법을 코드로 보자면 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Test { public static void main(String[] args){ String a = "1, 2, 3, 4, 5, 6, 7"; String[] result = a.split(","); //컴마(,)를 기준으로 문자열 분리 for(int index = 0; index

JAVA 2020.04.17

라인플러스 코딩테스트 후기.

지원동기 최근 코로나19 사태로 인해 대부분의 기업들이 채용계획을 축소 OR 취소하고 있는데, 일부 기업들은 비대면으로 채용절차를 진행하고 있는 것 같다. 비대면 채용을 실시하는 회사중 하나가 라인플러스였는데, 현재 다른회사에 재직중이지만, 타회사 채용절차나 코딩테스트를 경험해보는 것도 좋을 것 같아 지원했다. 채용절차 이번 라인플러스의 채용절차의 경우 지원서작성 -> 코딩테스트 -> 이력서제출 -> 1차면접 -> 2차면접 순으로 이뤄진다고 공고문에 게시되어 있었고, 모든 절차는 인택트, 즉 비대면으로 이뤄진다고 한다. 코딩테스트 나의 경우 3월경 지원서를 접수했고, 지원서 접수마감 후에 메일로 코딩테스트에 대한 안내 메일이 온다, 대충 내용은 정해진 시간에 안내해주는 사이트에서 코딩테스트를 응시하라는 ..

REPOSITORY 2020.04.06

JAVA 문자열 치환(replace ) 사용법 정리

Java에는 문자열(String)에서 특정문자 치환해줄 수 있는 기능을 제공하는 replace함수를 제공한다. 코딩테스트나 실무에서도 유용하게 사용되는 함수이니 꼭 알아두는게 좋을 것 같다. 종류에는 replace, replaceAll, replaceFirst가 있는데, 사용법은 코드를 통해 알아보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public void replaceTest() { // ","를 "/"로 치환 String target = "딸기,토마토,수박,사과,배,포도"; String result = target.replace(",", "/"); System.out.println(result); //결과 = 딸기/토마토/수박/사과/배/포도 S..

JAVA 2020.03.25

JAVA의 for each문

학부에서 코딩을 하는게 아닌, 현업에서 개발을 하다보니 for문보다는 for-each문을 더 자주 사용하게 되었는데, 내가 for-each문에 대해 잘 알고쓰는게 아닌 것 같아서 간단하게나마 정리해보고자한다. 먼저 for-each문은 Java5에서 추가되었고, 기존 for문과는 다르게 반복문 안의 요소에 직관적으로 접근할 수 있게 되었다. 기존 for문과의 차이점을 코드로보자면 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 //main..... public void loop() { String []array = new String[]{"1", "2", "3", "4"}; for(int i = 0; i

JAVA 2020.03.10

Querydsl에서 DTO를 사용하는 방법

개발을 하고 있는데, 서로 연관 관계가 없는 테이블간에 데이터를 가져와야 할 일이 있었다, 각 Entity들에 @OneToMany나 @ManyToOne 어노테이션을 이용해 데이터를 가져오는 방법도 고려해보았으나, 위 방법은 제일 간단한 방법이였지만, 서로 연관관계도 없는 Entity에 @ManyToOne나 @OneToMany을 이용하는 건 코드품질상, 관리적 측면에서 올바르지 않다고 판단되었다, 따라서 querydsl을 이용해 데이터를 가져오기로 했으나, 막상 코드를짜서 실행해보니, 맨 앞에 선언되어있는 엔티티의 데이터만 가져오고 조인된 나머지 데이터들을 가져오지 못하는 문제가 발생했다. DTO를 이용해 데이터를 받아야겠다는 생각까지는 도달했으나, 당최 JPA서는 DTO를 어떻게 사용해야하는지 감이 안잡..

SPRING FRAMEWORK 2020.03.04

JPA @Modifying ??

개발을 하던도중 delete from table where id = id 에 해당하는 기능을 JpaRepository를 이용해 구현해야 할일이 있어서 deleteById를 구현체로 만들었더니 Not supported for DML operations 이라는 오류를 확인하게 되었다.. 따라서 검색을 해본결과 JPA에서 DDL과 insert, delete, update에 해당하는 쿼리에는 select 쿼리가 아니라는 나타낼 수 있는 @Modifying 어노테이션을 선언해줘야 사용할 수 있다는 것이였다. @Modifying 어노테이션을 선언해주니 실행해보니 잘 동작한다.. 그런데 왜 selelct문을 제외한 쿼리에서는 저 어노테이션이 필요한지는 조금 더 알아봐야 할 것 같다. public interface T..

SPRING FRAMEWORK 2020.03.03