TIL/Spring

· TIL/Spring
💡 원본글 : https://thorben-janssen.com/implement-soft-delete-hibernate/ How to implement a soft delete with Hibernate Hibernate supports a set of annotations that allows you to implement a soft delete with minimal coding effort. thorben-janssen.com 일부 응용 프로그램에서는 데이터베이스에서 레코드를 영구적으로 삭제하고 싶지 않거나 삭제가 허용되지 않을 수 있습니다. 그러나 더 이상 활성 상태가 아닌 레코드를 삭제하거나 숨겨야 할 필요가 있습니다. 예를 들어, 여전히 사용 중인 다른 비즈니스 객체에 연결된 사용자 계정을..
· TIL/Spring
💡 원본글 : https://towardsdev.com/data-transfer-object-dto-in-spring-boot-c00678cc5946 Data Transfer Object (DTO) in Spring Boot Explore the benefits of using Data Transfer Objects (DTOs) in Spring Boot, with examples including manual DTO creation, ModelMapper, and… towardsdev.com 이 글에서는 Spring Boot에서 데이터 전송 객체(DTO)의 이점을 탐구하며, 수동 DTO 생성, ModelMapper, Lombok을 포함한 예제들을 살펴볼 것입니다. Photo by Joshua Sorti..
· TIL/Spring
공개하지 말아야 하는 값을 암호화 해보자. (jasypt를 사용하기.) 서론 최근 노마드 커뮤니티 사이드 프로젝트를 진행 하던 중에, 프로덕션 DB 연결하기 위한 URL, name, password를 application.yml에 넣어야 하는데, 깃헙으로 코드를 관리하고 있던 차라 단순히 올리기가 어려운 문제가 있었습니다. AWS의 Parameter Store와 같은 기능을 쓰면 좋지만, 현재 초기 단계이고 빠르게 서버 구축을 해두고 계속해서 배포하면서 QA를 진행하고 MVP를 구현해야 하는 단계에서 Parameter Store를 사용하기 보단, 다른 방법을 사용하는것이 좋겠다. 라고 생각해서 검색을 하다가 jasypt라는 라이브러리를 찾게 되었고 해당 라이브러리로 적용한 방법을 공유합니다. 관련 라이브..
· TIL/Spring
Spring JPA의 @Table 어노테이션에 대해서 알아보자 - name을 어떻게 매핑하는가? 서론 Entity와 Table을 매핑하기 위해 사용하는 어노테이션은 @Table 어노테이션 입니다. 실제 @Table 어노테이션이 어떤 역할을 해주는것인지, 또한 각 속성값을 어떻게 동작시키게 되는지에 대해서 알아볼 예정입니다. 코드를 살펴보다가, 대체 @Table 의 name은 어떻게 매핑이 되는건지?에 대한 궁금증이 생겨서 그걸 중점적으로 이야기를 나눠보도록 하겠습니다. 어노테이션 코드 살펴보기 package jakarta.persistence; import java.lang.annotation.Target; import java.lang.annotation.Retention; import static j..
· TIL/Spring
IntelliJ IDE에서 Spring Initializr를 이용해 프로젝트를 생성해보자. 서론 이 글은 Intelli J를 통해 Spring 프로젝트를 생성해보는 글입니다. Spring 프로젝트를 만드는 방법은 여러가지 있지만, 간단히 만들어 볼 예정입니다. 단계 IntelliJ IDE를 설치를 진행합니다. 설치는 IntelliJ IDE를 실행합니다. 위 사진 페이지에서 New Project를 클릭합니다. 그리고 왼쪽 Generators에서 Spring Initializr를 클릭합니다. 위 사진의 각 값들을 채워넣습니다. Name: 프로젝트 이름 Location: 로컬 내에 저장할 경로 Language: 사용할 언어 Type: Build 도구 선택 Group: 패키지 그룹 Artififact: 프로젝트..
· TIL/Spring
Spring의 ResponseEntity에 대해 알아보자 해당 글은 Java 11과 SpringBoot 2.6.1 버전으로 작성되었습니다. ResponseEntity란? Spring 3.0.2 부터 등장한 HttpStatus 상태 코드를 추가하는 HttpEntity의 확장으로 RestTemplate과 @Controller 메서드에서 사용됩니다. RestTemplate에서는 getForEntity() 와 exchange() 에 의해 반환됩니다. 빌더 형식과 객체 생성 둘다 사용이 가능합니다. return new ResponseEntity("Hello World", responseHeaders, HttpStatus.CREATED); return ResponseEntity.created(location) .h..
· TIL/Spring
@Id / @GeneratedValue에 대해 알아보자 PK를 나타내기 위해 @Id 어노테이션을 사용하며, 생성 전략을 정의하기 위해 @GeneratedValue 를 사용한다. 해당 어노테이션에 대해서 알아보도록 하자. @Id package javax.persistence; import java.lang.annotation.Target; import java.lang.annotation.Retention; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; ..
· TIL/Spring
Spring Boot Welcome Page 서론 Spring Boot supports both static and templated welcome pages. It first looks for an index.html file in the configured static content locations. If one is not found, it then looks for an index template. If either is found, it is automatically used as the welcome page of the application. 위의 spring boot docs에 따르면 static폴더의 index.html을 찾아 맨 처음 /(루트) view(Welcome Page)로 지정..
· TIL/Spring
WebClient VS RestTemplate RestTemplate이란? Spring은 오랫동안 웹 클라이언트 추상화로 RestTemplate을 제공하고 있었습니다. 내부적으로 RestTemplate은 요청 당 스레드 모델을 기반으로 하는 Java Servlet API를 사용합니다. 이 의미는 웹 클라이언트가 응답을 받을 때 까지 스레드가 차단되는데, 여기서 문제점은 각각의 스레드가 일정량의 메모리와 CPU를 사용합니다. 이때, 결과를 기다리는 느린 서비스를 기다리는 수신 요청이 많다고 한다면 요청이 쌓이고 많은 스레드를 생성해서 스레드 풀을 소모하거나 사용 가능한 모든 메모리를 차지하게 될 것입니다. 또한 빈번한 Context Switch을 통해 성능 저하가 발생할 수 있습니다. 가장 쉽게 생각하면 ..
· TIL/Spring
엔티티 생명주기(Entity LifeCycle) @DisplayName("엔티티 생명주기 테스트") @Test void entityLifeCycleTest() { final EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); final EntityManager em = emf.createEntityManager(); final EntityTransaction transaction = em.getTransaction(); transaction.begin(); try { System.out.println("===== 영속 상태 테스트===="); final Team team = new Team(1L, "Team A"); //..
Seyun(Marco)
'TIL/Spring' 카테고리의 글 목록