spring7 Entity와 DTO, 어디까지 분리해야 할까? 서비스를 설계할 때 흔히 접하는 질문 중 하나가 바로 “Entity와 DTO를 어디까지 분리해야 하는가?”이다. 프로젝트 초반에는 모든 계층에서 Entity를 직접 사용하는 방식으로 시작하기 쉽지만, 시간이 지날수록 데이터 흐름이 복잡해지고, 여러 계층에서 도메인 객체를 공유하는 구조는 다양한 문제를 초래한다.이 글에서는 Entity와 DTO의 역할을 명확히 나누는 이유와, 이를 어떤 기준으로 설계해야 하는지 단계적으로 정리해본다.1. Entity와 DTO는 역할부터 다르다개념목적책임EntityDB 매핑, 영속성 관리도메인 상태를 표현하고 저장DTO (Data Transfer Object)계층 간 데이터 전달외부와의 인터페이스, 직렬화/역직렬화, UI 모델Entity는 비즈니스 로직과 밀접한 관계를 가지.. spring 2025. 8. 8. JPA 설계를 시작할 때 꼭 알아야 할 다섯 가지 원칙 JPA 설계를 시작할 때 꼭 알아야 할 다섯 가지 원칙JPA는 Java 진영에서 널리 사용되는 ORM 프레임워크다. 코드 몇 줄만으로 테이블을 매핑하고, 복잡한 SQL 없이도 객체 단위로 데이터를 다룰 수 있다는 점에서 생산성이 높다. 하지만 구조와 동작 원리를 충분히 이해하지 않은 채 사용하는 경우, 데이터 정합성 오류나 성능 문제를 겪게 된다.이 글에서는 JPA를 도입할 때 반드시 고려해야 할 설계 원칙 다섯 가지를 정리한다. 단순한 사용법보다는, 왜 그렇게 설계해야 하는지, 그리고 그렇지 않았을 때 발생하는 문제를 중심으로 설명한다.1. Setter는 최소화하고 생성자 또는 정적 팩토리 메서드를 사용하자JPA에서는 엔티티의 모든 필드를 @Entity에 선언하면 매핑이 완료된다. 이때 흔히 모든 필드.. spring 2025. 8. 6. [Spring-OAuth2] OAuth2AuthorizationServerConfiguration.applyDefaultSecurity - Deprecated 해결 문제 상황Spring Boot로 OAuth2 인가서버를 만드는 과정에서 문제 발생OAuth2AuthorizationServerConfiguration 설정에서 문제applyDefaultSecurity(http) 정적 메소드가 deprecated 되었다1.4 버전 이후로 deprecated// DeprecatedOAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http); 해결 방법OAuth2AuthorizationServerConfigurer 직접 적용: applyDefaultSecurity 대신 OAuth2AuthorizationServerConfigurer를 HttpSecurity 객체에 직접 적용@Beanpublic SecurityFilter.. spring 2025. 1. 18. [SpringBoot] JDBC - Connection Pool을 미리 생성하여 초기 속도 개선 1. 문제 Connection Pool은 첫 번째 요청이 오기 전까지 생성되지 않는다. 애플리케이션이 시작 후 처음 받는 요청은 커넥션 풀이 생성되는 시간만큼 지연되어 클라이언트가 응답을 느려지게 된다. 2. 해결 방안 애플리케이션이 시작될 때 강제적으로 커넥션 풀을 미리 생성하여 문제를 해결 데이터베이스에 요청을 보내는 runner 메소드를 작성한 후 Bean으로 등록하면 된다. 애플리케이션이 실핼될 때 빈을 생성하는 과정에서 아래의 코드가 실행되며 커넥션 풀이 생성될 것이다. @Bean public ApplicationRunner runner(DataSource dataSource) { return args -> { // 데이터베이스에 요청을 보내어 미리 커넥션 풀을 생성 Connection conn.. spring 2024. 3. 31. [Springboot] spring properties 파일 한글 깨짐 오류 해결 1. 문제 상황 - 스프링 properties 파일에 작성된 한글이 정상적으로 인식되지 않는 상황. (한글 값 출력 시 '?'로 출력됨) @SpringBootTest로 확인 시 hello= 한글이 깨지면서 출력된다. 2. 해결 방법 우측 하단의 'Transparent native-to-ascii-conversion' 버튼을 체크해 주면 된다. 대게 한글이 깨지는 경우는 인코딩 문제이기 때문에 UTF-8 인코딩 및 아스키 변환 설정을 확인해보면 해결할 수 있다. spring 2023. 9. 6. [Springboot]@Transactional(readOnly = true) 에러 1. 문제 상황 트랜잭션 어노테이션을 사용 중 에러 발생 readOnly가 빨간색으로 표시되면서 오류 발생 2. 해결 방법 위의 사진처럼 javax의 Transaction 어노테이션을 임포트를 하고 있었다. 자동 import 기능을 쓰다가 발생한 문제인 것 같다. import javax.transaction.Transactional 을 import org.springframework.transaction.annotation.Transactional 로 변경 spring 2023. 4. 6. [SpringBoot] 테스트 오류 - Execution failed for task ':test'. 1. 문제 상황 Junit을 이용하여 단위 테스트 중 에러발생 org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 7. at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63) at java.base@17.0.3.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base@17.0.3.1/jdk.internal.reflect.Na.. spring 2023. 4. 1. 이전 1 다음