[Spring Boot] 16. 디버깅 (Repository)

김건우's avatar
Apr 01, 2025
[Spring Boot] 16. 디버깅 (Repository)

1. this.em = em; 삭제시

: 데이터베이스 변경 사항이 저장되지 않음

문제 코드

public StoreRepository(EntityManager em) { // this.em = em; (❌ 삭제됨) }

발생하는 오류

  • em이 null 상태가 되어, em.createNativeQuery() 호출 시 NullPointerException 발생.

오류 메시지

java.lang.NullPointerException: Cannot invoke "jakarta.persistence.EntityManager.createNativeQuery(String)" because "this.em" is null at com.metacoding.storev1.store.StoreRepository.save(StoreRepository.java:14)

2. query.executeUpdate(); 삭제 시

: 데이터가 저장, 수정, 삭제 되지 않음

문제 코드

public void save(String name, int stock, int price) { Query query = em.createNativeQuery("insert into store_tb(name, stock, price) values(?,?,?)"); query.setParameter(1, name); query.setParameter(2, stock); query.setParameter(3, price); // query.executeUpdate(); (❌ 삭제됨) }

발생하는 오류

  • executeUpdate()가 호출되지 않으면 SQL이 실행되지 않음.
  • 즉, INSERT, UPDATE, DELETE 작업이 DB에 반영되지 않음.

오류 메시지

오류 메시지는 없지만, 데이터가 변경되지 않음

3. findAll()에서 Store.class를 지정하지 않으면

문제 코드

public List<Store> findAll() { Query query = em.createNativeQuery("select * from store_tb order by id desc"); // (❌ Store.class 제거됨) return query.getResultList(); }

발생하는 오류

  • createNativeQuery()의 기본 반환 타입은 Object[]이므로, Store 엔티티로 변환되지 않음.
  • List<Object[]>를 List<Store>로 캐스팅할 수 없어서 ClassCastException 발생.

오류 메시지

java.lang.ClassCastException: cannot be cast to com.metacoding.storev1.store.Store at com.metacoding.storev1.store.StoreRepository.findAll(StoreRepository.java:21)

4.findByid(int id)에서 getSingleResult()를 호출하면 존재하지 않는 데이터 조회 시

문제 코드

public Store findByid(int id) { Query query = em.createNativeQuery("select * from store_tb where id = ?", Store.class); query.setParameter(1, id); return (Store) query.getSingleResult(); // ❌ 존재하지 않는 데이터 조회 시 예외 발생 가능 }

발생하는 오류

  • getSingleResult()는 결과가 없으면 NoResultException을 던짐.

오류 메시지

jakarta.persistence.NoResultException: No entity found for query at com.metacoding.storev1.store.StoreRepository.findByid(StoreRepository.java:28)

Share article

gunwoo