[Spring] JPA - @MappedSuperclass
·
Back end/Spring Project
JPA를 사용하다 보면 여러 엔티티에서 공통으로 쓰이는 컬럼이 반복적으로 등장합니다.예를 들어, id, 생성일, 수정일, 작성자 같은 필드는 대부분의 엔티티에서 공통적으로 관리됩니다.이럴 때 JPA에서 제공하는 @MappedSuperclass를 사용하면 중복을 줄이고 깔끔하게 관리할 수 있습니다. 📖 @MappedSuperclass란?공통 매핑 정보를 모아두는 클래스엔티티가 아니며, 테이블과 직접 매핑되지 않음단순히 자식 엔티티에게 매핑 정보만 제공하는 역할따라서 em.find(BaseEntity) 같은 직접 조회는 불가능@MappedSuperclasspublic abstract class BaseEntity { @Id @GeneratedValue private Long id; p..
[Spring] JPA 기본 CRUD 동작 예제
·
Back end/Spring Project
JPA에서 제공하는 조회(Select), 등록(Insert), 수정(Update), 삭제(Delete) 기능은모두 영속성 컨텍스트와 밀접하게 연관되어 있습니다. 예제를 통해 각 기능의 실행 흐름과 콘솔 로그 결과를 확인해보겠습니다.1. 조회 – 1차 캐시 동작 확인EntityManager는 조회 시 먼저 1차 캐시를 확인하고,이미 같은 트랜잭션 내에서 조회한 엔티티라면 DB 쿼리를 실행하지 않습니다.try { // 1차 캐시 테스트 Member findMember1 = em.find(Member.class, 101L); // 첫 조회 → DB SQL 실행 Member findMember2 = em.find(Member.class, 101L); // 두 번째 조회 → 1차 캐시에서 반환 ..
[Spring] BeanFactory와 ApplicationContext
·
Back end/Spring Project
스프링에서 빈(Bean)을 관리하는 핵심 컴포넌트는 스프링 컨테이너입니다. 그중에서도 가장 중요한 인터페이스가 바로 BeanFactory와 ApplicationContext인데요, 이 둘의 차이를 제대로 이해하면 스프링의 동작 원리를 더 쉽게 파악할 수 있습니다. 📌 스프링 컨테이너의 구조BeanFactory ↑ ApplicationContext ↑ AnnotationConfigApplicationContextBeanFactory: 가장 기본적인 스프링 컨테이너의 최상위 인터페이스 ApplicationContext: BeanFactory를 상속하여 확장한 인터페이스 AnnotationConfigApplicationContext: 자바 기반 설정(@Configuration)을 지원하는 실제 구..
[Spring] AnnotationConfigApplicationContext로 알아보는 스프링 컨테이너 생성 과정
·
Back end/Spring Project
📌 스프링 컨테이너의 생성 과정스프링에서는 AnnotationConfigApplicationContext를 사용하면 자바 기반 설정으로 스프링 컨테이너를 구성할 수 있습니다. 이번 글에서는 생성자 주입 방식으로 스프링 빈을 설정하고,AnnotationConfigApplicationContext가 내부적으로 어떤 과정을 거쳐빈을 생성하고 의존관계를 주입하는지 단계별로 정리해보겠습니다.✅ 스프링 컨테이너란?객체(Bean)를 관리하는 IoC(Inversion of Control) 컨테이너입니다.개발자가 직접 객체를 생성하고 연결하지 않고, 스프링이 대신 객체를 생성하고 의존성을 주입해줍니다.✅ 컨테이너 생성 과정ApplicationContext context = new AnnotationConfigAppli..
[Spring Project] 반복되는 JDBC 코드, JdbcTemplate으로 깔끔하게 정리하기
·
Back end/Spring Project
✅ JdbcTemplate이란?JdbcTemplate은 Spring에서 제공하는 JDBC 추상화 도구로, JDBC API의 반복적인 코드(Connection, PreparedStatement, ResultSet 관리 등)를 제거하여 더 간결하고 유지보수하기 쉬운 코드를 작성할 수 있게 해줍니다. ✅ JDBC 직접 구현 vs JdbcTemplate 사용 비교🔧 기존 JDBC 직접 사용 코드 (반복 코드 多)Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1, id)..
[에러로그] UnsatisfiedDependencyException: Error creating bean with name 'webMvcRequestHandlerProvider' defined in URL 해결방법
·
Back end/에러로그
[ 상황 ] Swagger 관련 설정을 하면서 서버를 시작하면 아래와 같은 오류가 발생했습니다. UnsatisfiedDependencyException: Error creating bean with name 'webMvcRequestHandlerProvider' defined in URL... .NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.List'... . . . [ 원인 ] 구글링을 해본 결과, spring context와 관련된 설정이 중복되어 발생한 문제였습니다. [ 해결 방법 ] @EnableWebMvc를 사용하는 파일에서 @Configuration을 지워줍니다. [ 오류 전체 로그 ] Caused by: org.sp..
[Spring Project] 스프링 3.x에서 4.x로 버전 업그레이드하기
·
Back end/Spring Project
안녕하세요! 오늘은 스프링 3.x에서 4.x로 버전 업그레이드하는 방법에 대해 알려드릴게요! 저는 스프링 Tiles3를 사용하려고 3.1.1 RELLEASE에서 4.3.13 RELLEASE 버전으로 업그레이드를 하였습니다. 먼저 pom.xml 에서 스프링 버전을 3.1.1 RELLEASE에서 4.3.13 RELLEASE 버전으로 변경합니다. 그 다음으로 maven-compiler-plugin의 source와 target을 1.6에서 1.8로 변경합니다. 프로젝트 우클릭 > Maven > Update Project 를 진행합니다. 이렇게 스프링 3.x에서 4.x로 버전 업그레이드가 완료되었습니다! 이상으로 자바 환경변수 설정하는 방법을 마치겠습니다. 도움이 되셨다면 ❤와 구독하기 눌러주세요! :)