300x250
반응형

Back-End 99

[Spring] Spring Jdbc - batchUpdate()를 사용한 bulk Insert 최적화

Spring Data JPA의 saveAll()메서드는 인자 값으로 받은 entity들을 저장하는 메서드이다. 실제로 실행해보면 여러 엔티티들에 대한 insert 쿼리가 각각 한 번 씩 차례대로 나가는 것을 볼 수 있다. 엔티티의 수가 적으면 상관없지만, 10,000건, 100,000건 처럼 많아지면 엔티티 1 : insert 1 방식은 부담이 될 수 있다. 인터넷을 검색해보면 hibernate.jdbc.batch_size: 50 처럼 한 번에 여러 건을 insert하는 벌크 연산이 많이 소개되어 있다. 이 방법을 사용해도 좋지만, 여기서는 Spring JPA가 아닌 JDBC를 사용한 보다 빠르고 강력한 연산인 batchUpdate()를 소개하고자 한다. Bulk Insert bulk insert는 여러..

Back-End/Spring 2023.02.09

[Spring] 서버에서 다른 서버의 Rest API 요청 및 응답 받기

스프링 서버단에서 다른 서버에 request를 보내야 하는 경우 두 가지 방법을 이용 가능. ! 1. RestTemplate을 이용한다. private static void getEmployees() { final String uri = "http://localhost:8080/springrestexample/employees.xml"; RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(uri, String.class); System.out.println(result); } 2. WebClient를 이용한다. (스프링 5버전 이상에서 지원하는 방식) @Bean public WebClient lo..

Back-End/Spring 2023.02.09

[Spring Boot] Spring Boot + Jasper + MySQL 데이터베이스 예제

이 페이지에서는 Spring Boot + Jasper Report + MySQL 데이터베이스 예제를 살펴봅니다. 보고서는 특정 대상 및 목적을 위해 조직된 형식으로 정보를 제공하는 문서입니다. Jasper Report는 오픈 소스 Java 보고 도구입니다. PDF, Excel 등과 같은 보고서의 진실성을 생성할 수 있습니다. 유사한 게시물: Spring Boot + Jasper 보고서 예제 우리가 만들 것 이 예제에서는 Spring Data JPA 를 사용하여 MySQL 데이터베이스 에서 직원 레코드를 가져오고 직원 목록을 보고서에 채웁니다. 마지막으로 아래와 같이 PDF 보고서를 생성합니다. 사용된 기술 이 예에서 사용된 기술 목록을 찾으십시오. STS 4 자바 8 스프링 부트 2.1.2.RELEASE..

Back-End/Spring 2023.02.09

[Spring Boot] Spring Boot + Jasper Report Example

이 가이드는 Spring Boot + Jasper Report 예제를 보여줍니다. Jasper Report는 오픈 소스 Java 보고 도구입니다. PDF, Excel 등과 같은 보고서의 진실성을 생성할 수 있습니다. 유사한 게시물: Spring Boot + Jasper Report + MySQL 데이터베이스 예제 우리가 만들 것 이 예에서는 직원 목록을 만들고 보고서를 디자인한 다음 직원 목록을 보고서에 채웁니다. 마지막으로 PDF 보고서를 생성합니다. 사용된 기술 이 예에서 사용된 기술 목록을 찾으십시오. STS 4 자바 8 스프링 부트 2.1.4.RELEASE Jaspersoft iReport 디자이너 종속성 필요 pom.xml 에 다음 종속성을 추가합니다 . net.sf.jasperreports j..

Back-End/Spring 2023.02.09

[JAVA]JXLS, POI JAVA에서 Excel 사용하는 구현 방법 및 종류 비교

개발을 하다 보면 종종 운영에서 엑셀 다운로드 기능에 대한 요구가 있는데, 이번에 Java에서 엑셀 다운로드를 구현하는 방법에 대해 알아보겠습니다. Java에서 엑셀 다운로드 기능을 위해 자주 쓰이는 방식으로 JXLS 라이브러리를 이용한 방식과 POI 라이브러리를 이용한 방식이 있습니다. ( ‘제이엑셀’, ‘포이’ 라고들 읽죠 ㅎㅎ) 1. JXLS 라이브러리를 이용한 엑셀 다운로드 기능 구현 방법 2. 티몬에서 JXLS를 이용했을 때의 장애발생 및 해결방안 3. POI 라이브러리의 SXSSF를 이용한 엑셀 다운로드 기능 구현 방법 1. JXLS 라이브러리를 이용한 엑셀 다운로드 1-1) JXLS 이란 ? - JXLS은 개발자가 미리 만들어 놓은 엑셀 템플릿 파일을 토대로 데이터가 자동으로 쓰여지기 때문에..

Back-End/Java 2023.02.09

[API]RESTful API 설계 가이드

1. RESTful API 설계 가이드 본 문서는 REST API를 좀 더 RESTful 하게 설계하도록 가이드할 목적으로 만들어졌다. 따라서, 기본적인 REST API 개념 설명은 아래의 링크로 대신한다. REST API 제대로 알고 사용하기 REST 아키텍처를 훌륭하게 적용하기 위한 몇 가지 디자인 팁 일부 규칙들은 기존에 존재하는 회사 규칙 때문에 보편적인 REST API의 철학과 다를 수 있다. RESTful API 설계 가이드 심화 과정 REST API 관점에서 바라보는 HTTP 상태 코드(HTTP status code) TOC 1. RESTful API 설계 가이드 2. URL Rules 2.1. 마지막에 / 포함하지 않는다. 2.2. _(underbar) 대신 -(dash)를 사용한다. 2...

Back-End/REST API 2023.02.09

[Spring] 응답 문자열 한글 깨짐 문제 해결

spring 프로젝트에서 웹 view를 사용하지 않는 경우에는 @ResponseBody annotation을 사용해서 응답을 클라이언트에 반환한다. 이때 spring에서는 제대로 한글 보내는데 안드로이드에서는 한글이 ??? 으로 처리되는 경우가 발생한다. (spring에서 인코딩도 모두 UTF-8로 설정해줬다.) 처음에는 안드로이드 쪽 인코딩 처리가 문제인 줄 알았는데 서버에서 보낸 문자열 자체를 ???으로 받았다. 서버에서 응답을 보낼 때 UTF-8 처리를 해야 할 것 같아서 열심히 찾아봤는데 역시 서버에서 인코딩 처리를 해야 했다. // get my nickname @GetMapping(value="review/myNickname") public String getMyId(@RequestHeader ..

Back-End/Spring 2023.02.09

[Android] Retrofit2 @Body @Field 차이

프로젝트에서 AWS와 노드로 서버를 구성하고 안드로이드 클라이언트 Retrofit2 통신에서 평소 @Field를 사용했는데, 계속 Json으로 서버에서 못받고 이상한 값이 넘어오는 현상이발생했다. 서버문제인지 클라이언트의 모델 문제인지 무슨 문제인지!!!!!! 삽질을 꽤 오래하고 틀리지도 않는 부분을 고쳐댔다........ (에러도 안나고 서버쪽에 값이 이상하게 들어가기만해서 몇줄이 틀렸는지 알 수가 없었다.ㅠ.ㅠ) 원인은 Retrofit2 인터페이스가 잘못되었었다. 먼저 요점만 말하면 @Field가 아니라 @Body를 사용해야했다. 덕분에 둘의 차이점을 알아보는 시간을 가지고 포스팅을 하게 되었다. 사건 배경(처음에 실수한 코드 사진) 밑과 같이 Json으로 보낼려고 했다. (DTO, POJO) Rou..

Back-End/그 외 2023.02.09

[Spring Security] 비밀번호 암호화 PasswordEncoder

1. Password Encoder 스프링 시큐리티(Spring Security)에서 제공하는 비밀번호 암호화 방법이다. 단방향 암호화로 진행이 되는데 인터페이스와 구현체를 제공한다. 인터페이스 구성 요소 public interface PasswordEncoder { // 비밀번호를 단방향 암호화 String encode(CharSequence rawPassword); // 암호화되지 않은 비밀번호(raw-)와 암호화된 비밀번호(encoded-)가 일치하는지 비교 boolean matches(CharSequence rawPassword, String encodedPassword); // 암호화된 비밀번호를 다시 암호화하고자 할 경우 true를 return하게 설정 default boolean upgrad..

Back-End/Spring 2023.02.09

[Android] 사설 SSL 인증서를 이용한 https 통신

과정은 인증서를 설정해주는 것 외에는 보통의 hHttpURLConnection을 이요한 통신과 흡사하다. private HttpsURLConnection urlConnection; private String method; private SSLContext sslContext; public static int BUFFER_SIZE = 1024; public HttpsURLConnection getConnection(Context context, String url, String requestMethod) { try { setCertification(context); // URL 설정 URL request_url = new URL(url); method = requestMethod; urlConnection..

Back-End/그 외 2023.02.09
300x250
반응형