[Spring] Jasypt로 설정 암호화 하는 방법 알아보기 Spring 프레임워크에서 Jasypt를 이용하여 설정 파일의 암호화를 할 수 있습니다. 이를 통해 암호화된 설정 파일을 사용하여 보안성을 높일 수 있습니다. 이번 글에서는 Jasypt를 이용하여 설정 파일을 암호화하는 방법에 대해 상세하게 설명하겠습니다. Jasypt란? Jasypt는 Java 암호화 라이브러리입니다. 암호화된 데이터를 안전하게 보호하고 관리할 수 있는 다양한 기능을 제공합니다. Spring Boot에서는 Jasypt를 이용하여 설정 파일의 암호화를 지원하고 있습니다. Jasypt를 사용한 설정 파일 암호화 방법 1. Jasypt 의존성 추가 먼저, pom.xml 파일에 Jasypt 의존성을 추가해야 합니다. com.gith..
[Linux] Linux에서 SpringBoot jar 파일 서비스 등록해 자동실행 되게 하기(+ 서비스 관련 기본 명령어들) 서비스 등록을 위한 설정 파일 작성하기 1. 서비스 만들기 vi /etc/systemd/system/${service name}.service [Unit] Description=Service Description After=syslog.target network.target postgresql.service [Service] ExecStart=/bin/bash -c "exec java -jar /usr/local/server/test.jar" Restart=on-failure RestartSec=10 User=root Group=root [Install] WantedBy=mult..
[Spring] Jpa insert default value 알아보기 Spring JPA를 사용하면 데이터베이스 테이블에 새로운 레코드를 삽입할 때, 기본값(default value)을 지정할 수 있습니다. 데이터베이스에서 기본값을 지정하면 JPA에서 이를 인식하여 적용할 수 있습니다. 이 글에서는 JPA에서 기본값을 삽입하는 방법을 소개하고, @DynamicInsert, @DynamicUpdate, @PrePersist, @PreUpdate 어노테이션을 활용하여 기본값을 삽입하는 방법을 알아보겠습니다. 1. columnDefinition JPA에서는 엔티티 클래스의 필드에 @Column 어노테이션을 사용하여 데이터베이스 테이블의 컬럼 정보를 설정할 수 있습니다. @Column 어노테이션에는 다양한 속성..
[Spring] JPA native query 사용시 dto mapping 방법 알아보기 1. EntityManager를 사용하여 Native Query 실행 @PersistenceContext private EntityManager entityManager; public List getMyDtoList() { String sql = "SELECT * FROM my_table"; Query query = entityManager.createNativeQuery(sql, MyDto.class); List myDtoList = query.getResultList(); return myDtoList; } EntityManager를 사용하여 Native Query를 실행하고, 이를 DTO 객체에 매핑합니다. 위..
[Spring] JPA In 절 사용방법 알아보기 Spring JPA에서 IN절은 여러 개의 값으로 쿼리를 작성하는 방법입니다. IN절을 사용하여 복수 개의 값으로 필터링할 수 있으며, JPQL, Native Query 및 QueryDSL에서 모두 사용할 수 있습니다. 아래 3가지 방법으로 Spring JPA In절 사용방법을 알아보겠습니다. 1. JPQL에서 In절 사용하기 JPQL에서 IN절을 사용하여 쿼리를 작성하는 방법은 다음과 같습니다. 예를 들어, Customer 엔티티 클래스가 있다고 가정해 봅시다. @Entity public class Customer { @Id private Long id; private String firstName; private String lastName; priv..
[Spring] DB커넥션풀과 Hikari CP 알아보기 1. DB커넥션 풀이란? DB 커넥션 풀은 DB 연결을 관리하는 기술입니다. DB 연결은 매우 비싼 작업이며, 매번 연결을 생성하는 것은 성능적으로 비효율적입니다. 따라서, DB 연결을 미리 생성하여 풀(pool)에 저장해 두었다가 필요할 때마다 풀에서 연결을 가져와 사용하고, 사용이 끝난 연결을 다시 풀에 반환하는 방식으로 동작합니다. 2. Hikari CP란? HikariCP는 Java에서 사용되는 DB 커넥션 풀 라이브러리 중 하나입니다. HikariCP는 가볍고 빠른 성능을 제공하면서도 안정적이다. 1. Hikari CP 특징은? 1.빠르고 가벼움 HikariCP는 코드가 간단하고 가벼워서 빠른 속도와 적은 메모리 사용량을 제공합니다. 그리..
Over-fetching vs Under-fetching 알아보기 1. Over fetching Over-fetching은 클라이언트가 필요로 하지 않는 정보를 서버에서 받아오는 것을 의미합니다. 예를 들어, 클라이언트가 사용자 이름만 필요한데, 서버에서는 사용자 정보의 모든 필드를 반환하는 경우입니다. 이 경우, 클라이언트는 필요하지 않은 데이터를 받아와서 불필요한 데이터 전송량이 증가하게 되고, 서버 부하가 증가합니다. 2. Under fetching Under-fetching은 클라이언트가 필요로 하는 정보를 얻기 위해 여러 번의 요청을 보내야 하는 것을 의미합니다. 예를 들어, 사용자 정보를 조회하는 API가 있다고 가정해봅시다. 이 API에서는 사용자 정보와 함께 해당 사용자의 게시글 목록도 반..
[Spring] default_batch_fetch_size의 작동원리 알아보기 Spring에서 default_batch_fetch_size는 Hibernate의 설정 중 하나로, 지연 로딩을 사용하는 엔티티에서 일괄 조회할 때 fetch size를 설정하는 옵션입니다. 설정 값은 정수 형태로 지정되며, 한 번의 쿼리로 가져올 엔티티 수를 결정합니다. 예를 들어, default_batch_fetch_size를 20으로 설정하면, 쿼리 한 번으로 20개의 엔티티를 가져올 수 있습니다. 이렇게 일괄 조회를 하면 데이터베이스와의 통신 횟수가 감소하게 되어 성능 향상을 기대할 수 있습니다. 문제점 default_batch_fetch_size를 지나치게 크게 설정하면 네트워크 및 메모리 문제가 발생할 수 있습니다..
[Spring] ModelMapper를 이용해 DTO와 Entity 변환 방법 알아보기 ModelMapper는 Java 객체 간에 데이터를 매핑하는 라이브러리입니다. 이를 이용해 DTO와 Entity 간의 데이터 변환을 쉽게 할 수 있습니다. 다음은 ModelMapper를 이용해 DTO와 Entity 간의 데이터 변환을 하는 방법입니다. 1. ModelMapper 의존성 추가 dependencies { implementation 'org.modelmapper:modelmapper:2.4.4' } 2. ModelMapper Bean 등록 Spring Boot를 사용하는 경우, ModelMapper를 Bean으로 등록해주어야 합니다. @Configuration public class AppConfig { @..
Spring @Cacheable을 내부 메서드에 쓰면 안되는 이유 알아보기 Spring의 @Cacheable 어노테이션은 메서드의 실행 결과를 캐싱하는 기능을 제공합니다. 이를 통해 같은 요청에 대한 처리 시간을 줄일 수 있으며, 캐시를 이용해 응답 속도를 향상시킬 수 있습니다. 그러나 @Cacheable을 내부 메서드에 사용하는 것은 권장되지 않습니다. 이유는 다음과 같습니다. 1. @Cacheable은 public 메서드에만 적용 가능합니다. 2. 메서드 안에서 @Cacheable을 사용하면, 메서드 호출 시 캐시 검색 로직이 추가되어, 메서드 호출 비용이 높아집니다. 3. 내부 메서드에서는 일반적으로 외부에서 호출되지 않아, 캐시할 필요가 없습니다. 또한, 내부 메서드를 캐시하면, 외부 메서드가 변..