반응형

Java 79

Hibernate 성능 튜닝 Tips

1. 개발 과정에서 성능 이슈 찾기Hibernate에는 각 세션별 내부 통계를 확인할 수 있도록 출력해주는 기능이 있습니다. Spring Data JPA를 사용한다면 아래와 같이 설정하면 됩니다. (문제점을 찾을 때만 사용)spring.jpa.properties.hibernate.generate_statistics=truelogging.level.org.hibernate.stat=DEBUG 추가적으로 다음과 같이 설정을 하면 느린 쿼리에 대한 정보를 얻을 수 있습니다.spring.jpa.properties.hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=10   2. in_clause_parameter_padding 옵션 사용Hibernate 5.2.1..

back end/java 2025.03.10

Spring Boot: 웹 애플리케이션을 빠르고 쉽게 구축하는 방법

Spring Boot는 Spring Framework를 기반으로 한 웹 애플리케이션을 빠르고 쉽게 구축할 수 있는 도구입니다. Spring Boot를 사용하면 웹 애플리케이션 개발을 위한 초기 설정과 기본 구조를 쉽게 설정할 수 있으며, 다양한 기능을 제공하는 라이브러리와 연동하여 개발을 빠르게 진행할 수 있습니다. 이번 글에서는 Spring Boot의 개념과 특징, 사용 방법에 대해 자세히 알아보겠습니다. Spring Boot란 무엇인가? Spring Boot는 Spring Framework를 기반으로 하며, 웹 애플리케이션을 빠르고 쉽게 구축할 수 있도록 도와주는 도구입니다. Spring Boot는 일반적인 Spring Framework 개발에 필요한 초기 설정과 기본 구조를 자동으로 설정하여, 개발..

back end/java 2023.02.17

Java Spring: 애플리케이션 개발의 가장 핫한 프레임워크

Java Spring은 많은 개발자들이 사용하고 있는 Java 애플리케이션 개발을 위한 오픈소스 프레임워크입니다. 이번 글에서는 Java Spring에 대해 자세히 알아보고, 개발자들이 Spring을 사용하는 이유에 대해 알아보겠습니다. Spring Framework란 무엇인가? Spring Framework는 Java EE 표준 기반으로 만들어진 웹 응용 프로그램을 구축하는 데 사용할 수 있는 모듈과 컴포넌트를 제공하는 프레임워크입니다. Spring Framework는 많은 기능을 제공하는데, 그 중에서도 Spring Core, Spring MVC, Spring AOP, Spring ORM 등이 가장 많이 사용됩니다. Spring Core: IoC와 DI 기능 제공 Spring Core는 Spring ..

back end/java 2023.02.17

spring boot restful api에서 대용량 엑셀 다운로드

java excel download를 검색하면 많이 나오는 방식으로 엑셀 다운로드를 개발 때 다음과 같은 경우에 메모리 문제(out of memory)가 발생할 수 있습니다. 대용량 엑셀 다운로드가 발생할 경우 여러 명이 동시에 엑셀 다운로드를 할 경우 이번 포스팅에서는 Restful API에서 엑셀 다운로드하는 방법을 알아보겠습니다. Out of Memory(OOM)의 원인 1. 페이징 처리 Out of Memory가 발생하는 가장 흔한 원인은 페이징 처리입니다. 보통 엑셀 다운로드는 페이징 처리 없이 모든 데이터를 엑셀로 만들어야 합니다. 모든 데이터를 보기 위해 엑셀 다운로드를 하는 것이죠. 그래서 엑셀 다운로드 기능 개발 시, 페이징 처리 없이 모든 데이터를 한 번에 가져와서 처리합니다. 구글에서..

back end/java 2022.11.14

Copying a HashMap

생성자를 사용한 복사 HashMap src = new HashMap(); src.put("name", "hong"); src.put("age", "19"); HashMap dst = new HashMap(src);​ clone()을 사용한 복사 HashMap dst = (HashMap)src.clone();​ putAll()을 사용한 복사 HashMap dst = new HashMap(); dst.putAll(src);​ Map.Entry를 사용한 복사 HashMap dst = new HashMap(); for(Map.Entry entry : src.entrySet()) { dst.put(entry.getKey(), entry.getValue()); }​ keySet()을 사용한 복사 HashMap ds..

웹 개발 2021.07.31

java] file path에서 파일명만 가져오는 방법

프로그래밍을 하다 보면 아래와 같이 파일 경로에서 파일명만 추출해야 하는 경우가 생각보다 많습니다. 예를 들어 C:/Document/Temp/FileName.txt 에서 FileName.txt만 추출해야 할 경우 입니다. 방법 1. File.getName() 사용 java.io.File 클래스의 getName() 메서드를 이용한 방법이 있습니다. import java.io.File; public class Test { public static void main(String [] args) { File f = new File("C:\\Document\\Temp\\FileName.txt"); System.out.println(f.getName()); } } 방법 2. Path(java 7+) 를 사용 jav..

웹 개발 2021.05.02

Java - ArrayBlockingQueue 사용 방법

ArrayBlockingQueue는 Array로 구현된 BlockingQueue입니다. 특징은 아래와 같습니다. BlockingQueue 인터페이스를 구현 Queue를 생성할 때 크기를 설정(Queue의 크기가 정해져 있음) FIFO(First In First Out)로 동작 아이템을 가져올 때 비어있으면 null을 리턴하지 않고 아이템이 추가될 때까지 wait 아이템을 추가할 때 Queue가 가득 차 있으면 공간이 생길 때까지 wait 하거나 Exception이 발생하게 할 수도 있음 동시성에 안전하기 때문에 멀티 쓰레드 환경에서 synchronized 구문 없이 사용 가능 ArrayBlockingQueue 생성 아래와 같이 간단하게 객체를 생성할 수 있습니다. int capacity = 10; Arr..

웹 개발 2021.01.01

java test plugin - Infinitest

Infinitest는 지속적인 테스트를 해주는 Eclipse와 IntelliJ 플러그인입니다. Infinitest는 소스 코드 변경을 감지해서 영향도가 있는 테스트를 수행합니다. github: http://infinitest.github.io user guide: http://infinitest.github.io/doc/user_guide.html Eclipse에 설치방법 Help > Eclipse Marketplace 열기 infinitest 검색 및 설치 설정 파일 infinitest.filters 파일을 프로젝트 루트 디렉터리(working directory)에 추가합니다. Test로 끝나는 테스트 파일 .*Test Inner Classes .*\$.* package 안에 있는 테스트 com\.my..

웹 개발 2020.12.26

Spring Boot에서 MySQL JDBC Timezone 설정

때때로 MySQL에 날짜를 저장할 때 Database의 날짜가 시스템이나 JVM과 다르다는 것을 알게 됩니다. 이런 경우에는 Timezone을 설정하면 됩니다. 방법 1. URL parameter로 Timezone 설정 MySQL은 기본적으로 useLegacyDatetimeCode=true를 사용합니다. Timezone을 변경하려면 이 옵션을 false로 변경해야 합니다. 또한 serverTimezone 옵션도 추가해야 합니다. 아래와 같이 application.properties에 적어줍니다. spring.datasource.url=jdbc:mysql://loalhost:3306/test ?serverTimezone=UTC &useLegacyDatetimeCode=false spring.datasour..

웹 개발 2020.12.26
728x90
반응형
loading