728x90

java 98

GSON 라이브러리에 대해(편리한 JSON 변환에 관해)

GSON 라이브러리란? Gson은 Java에서 Json을 파싱하고, 생성하기 위해 사용되는 구글에서 개발한 오픈소스입니다. Java Object를 Json 문자열로 변환할 수 있고, Json 문자열을 Java Object로 변환할 수 있습니다. Gson 라이브러리 추가하기 Maven 에 설정 추가 JSON 파싱에 사용할 json-simple 라이브러리를 추가하기 위해 pom.xml 파일에 아래와 같이 dependency를 추가합니다. com.google.code.gson gson 2.8.7 Object -> Json 변환하기 Student 클래스 public class Student { private int id; private String name; public Student(int id, String..

JAVA 2022.09.15

AOP - 관점 지향 프로그래밍

스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때..

Spring 2022.09.13

Java 엑셀 파일(Excel) 다운로드

개발을 진행하다 보면 고객의 요청으로 특정 데이터를 추출하여 엑셀 파일을 생성하여 다운로드 받는 기능을 만드는 일이 종종있습니다. 엑셀 파일 생성 후 다운로드의 경우 크게 어렵지 않으며 자바에서 셋팅을 어떻게 해주냐에 따라 폰트, 글자 크기, 글자 배치 등을 설정할 수 있습니다. 오늘은 간단한 방법으로 자바 엑셀파일 다운로드에 대해서 알아보겠습니다. 1. GET 방식의 API 생성 @GetMapping("/get/excel/users") public void excel(HttpServletRequest req, HttpServletResponse res) { try { // 엑셀 다운로드 함수 TestUtil.excelDownload(res); }catch(Exception e) { e.printStac..

JAVA 2022.09.05

JAVA stream filter 정리

Filter 스트림내 요소에 대해서 필터링하는 작업 준비하기 java stream을 사용하는데 아직 미숙한것 같아서 여러가지 예제를 사용해보며 연습해보자. sample data (Human) 번호 이름 가진돈 생일 1 jojae 2900 1991-02-26 2 haha 1000 2003-03-02 3 arabia 30000 2001-04-06 4 cici 150 1982-05-16 5 zzang 40000 1910-06-26 6 ssu 200000 2012-07-11 7 kuku 150 1991-02-27 public class Human { private Long idx; private String name; private Integer money; private LocalDate birth; } 기본..

JAVA 2022.09.01

(MySql) workbench에서 쿼리 출력 후, 한글 안깨지고 엑셀(xlsx) 파일로 추출

1. mySql workbench를 실행한다. 2. 원하는 쿼리를 쿼리 칸에 붙여넣는다. 3. 그리고 좌측 상단에 번개모양 버튼을 눌러 쿼리를 실행한다. 4. 쿼리 결과가 나오면 Export 버튼을 클릭해서 csv 파일로 저장한다. 5. 저장한 파일을 우측 클릭해서 [연결 프로그램] → [메모장]으로 켜준다. 6. [파일]->[다른이름으로 저장]을 클릭한다. 이 창에서 [파일 형식]을 txt에서 모든 파일로 변경해주고 [파일 이름] 뒤에 .csv를 붙여준다. 그리고 인코딩이 UTF-8로 되어있는데 ANSI로 변경해준다.(안그러면 한글이 깨짐) 7. excel이 되는 컴퓨터에서 파일을 연다. 8. [파일]->[다른 이름으로 저장]을 누르고, [파일 형식]을 CSV에서 Excel 통합 문서로 변경해준다. 9..

CS지식 2022.09.01

(Rest API 개발)PUT과 PATCH의 차이점

HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미한다. 리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만 두개의 요청에는 약간의 차이가 있다. PUT : 리소스의 모든 것을 업데이트 한다. PATCH : 리소스의 일부를 업데이트 한다. 아래와 같은 회원이라는 리소스가 있다. 회원 (member) 1 이름 (name) 애용이 나이 (age) 10 성별 (gender) M 아래와 같은 요청을 보내면 PUT /members/1 { name : "홍길동", age : 19, gender : "M" } 회원 (member) 1 이름 (name) 홍길동 나이 (age) 19 성별 (gender) M 위와 같이 변한다. 이번에는 나이와 성별를 빼고 요청을 보내면 PUT /..

Rest API 2022.08.31

(스프링부트 Rest API) 다건 삭제 관련

Bulk delete 일반적으로 HTTP 메소드를 사용할 때 데이터 위치는 아래와 같습니다. GET, DELETE => header에 데이터 포함 POST, PUT => body에 데이터 포함 방법 1 첫 번째 방법은 구분자를 사용해서 path로 데이터를 넘기는 방법입니다. DELETE /resources/1;2;3;4 DELETE /resources/1+2+3+4 DELETE /resources/1,2,3,4 방법 2 두 번째 방법은 QueryString을 사용하는 방법입니다. DELETE /resources?id=1&id=2&id=3&id=4 방법 3 세 번째 방법은 POST나 PUT을 사용하는 방법입니다. 첫 번째, 두 번째 방법의 문제점은 길이의 제약이 있다는 점입니다. 브라우저마다 URL의 Ma..

Rest API 2022.08.30

@Transactional(rollbackFor = Exception.class) 에 대해

1. 서론 초반 @Transactional 어노테이션에 대해 자세히 알아보지 않고, 막연히 롤백때 사용한다고 하여 SQL C,U,D 를 할 때마다 메소드 위에 붙여서 사용하곤 하였다. 하지만, 내 코드를 보신 선임께서 단지 @Transactional 만 붙이면 롤백이 안되고, @Transactional(rollbackFor = Exception.class) 을 붙여야 된다고 알려주셨다. 여기에서 뭐 때문인지에 대해 호기심에 트랜잭션에 대해 찾아보다가 내가 생각했던 것 보다 더 많은 기능들이 존재한다는 것을 알고 정리해보려 한다. 2. 트랜잭션이 뭐지? 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다. begin, commit 을 자동으로 수행해준다. 예외 발생 시 rol..

JPA 2022.08.26

(Spring Data JPA)리스트에서 첫번째 값만 가져오기

최근 개발하면서 가장 상위에 있는 한개의 로우의 id 값을 id순으로 역순으로 정렬한뒤 가져오는 쿼리를 짜서 작업을 하려고 다음과 같이 쿼리문을 작성해서 JPQL을 사용하려고 했는데, 오류가 발생했다. -- mariaDB 기준 select id from table order by id desc limit 1; 찾아보니 JPQL은 limit 명령어를 지원하지 않는다고 해서, 구글을 좀 뒤져보니 쉽게 해결방법을 찾을 수 있었다. Spring JPA에서도 결과를 제한하는 기능을 제공하고 있었고, 나의 경우는 다음 문서를 참고했다. (Spring JPA Doc) Spring Data JPA - Reference Documentation Example 108. Using @Transactional at query..

JPA 2022.08.24

HashMap 사용 방법 및 예제

HashMap은 Map의 일종으로 key와 value의 쌍으로 이루어진 데이터를 보관합니다. HashMap은 다음과 같은 특징이 있습니다. null key와 null value를 모두 허용합니다. 내부적으로 데이터에 접근할 때 동기화를 보장하지 않습니다. 데이터의 순서를 보장하지 않습니다. 중복된 key값을 허용하진 않지만, 중복된 값은 갖을 수 있습니다. HashMap은 다음과 같은 API들을 제공합니다. 예제를 통해 어떻게 사용하는지 알아보겠습니다. put() putAll() get() remove() clear() isEmpty() keySet() values() containsKey() containsValue() replace() put() put()은 인자로 key와 value를 받습니다. 전..

JAVA 2022.08.16
728x90