분류 전체보기(250)
-
No entity found for query 에러
서비스 계층에서, 회원 가입 시 입력한 아이디와 같은 ID를 사용중인지 체크하고자 한다. 위의 코드는 리포지토리에서 작성한 코드인데, No entity found for query 에러가 발생했다. 이는 쿼리문이 잘못되었다기 보다는 동일한 ID를 가진 엔티티가 없어서, getSingleResult()에서 에러가 발생한 것으로 보인다. getSingleResult()는 결과가 null일 경우 따로 처리를 해주어야 한다. Optional을 사용하는 것이 null체크 코드보다 깔끔하므로 아래와 같이 코드를 수정했다. public Optional findMemberByLoginId(String loginId){ List members = em.createQuery("select m from Member m wh..
2022.06.01 -
@PostConstruct와 no EntityManager
에러 메시지 Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call 웹 개발중 테스트 데이터를 매 실행마다 입력하기 번거로워서 jpa: hibernate: ddl-auto: create update로 변경할까 하다가, 그냥 애플리케이션이 실행할때마다 샘플 데이터를 저장하기로 했다. 일단 트랜잭션이 걸려있는 Service 단에서 sampleData 메소드를 작성했다. 빈 생성(여기서는 해당 코드가 있는 Service 클래스)과 의존관계 주입이 완료된 다음, sa..
2022.05.31 -
Could not autowire. No beans of 'EntityManager' type found.
Spring, JPA를 실습중인데, 테스트 코드를 작성하다가 제목과 같은 에러가 발생했다. 주입을 하려면 스프링으로 관리하는 Bean이 되어야 하는데, JPA와 스프링은 각자의 방식(영속성 컨텍스트와 스프링 컨테이너)으로 빈을 관리하거나 엔티티를 관리한다. JPA는 EntityManager라는 인터페이스를 주입할 때 고유의 injection annotation이 존재한다. @PersistenceContext EntityManager em; 지금까지 @Autowired로 문제없이 주입했던 것 같은데,, 앞으로는 위의 어노테이션을 사용해야겠다. 물론 @Autowired로 EntityManager를 주입받아도 테스트는 통과했다.. 참고한 링크 https://stackoverflow.com/questions/2..
2022.05.30 -
[DB 접근 기술] 자바 예외 이해
스프링이 제공하는 예외 추상화를 알아보기 전에 자바의 기본 예외에 대해 간단히 설명한다. 예외 중 RuntimeException과 그 자손들을 언체크 예외(런타임 예외), 나머지 Exception의 자손들을 체크 예외라고 한다. 체크 예외는 컴파일러가 체크하는 예외이며, 언체크 예외는 컴파일러가 체크하지 않는 예외이다. 예외에 대해서는 2가지 기본 규칙이 존재한다. 1. 예외는 잡아서 처리하거나 던져야 한다. 2. 예외를 잡거나 던질때 지정한 예외뿐만 아니라 그 예외의 자손들도 함께 처리된다. - 예를 들어 Exception을 catch로 잡으면 그 하위 예외들도 모두 잡을 수 있다. 예외를 처리하지 못하고 계속 던지면, 자바의 main() 쓰레드는 예외 로그를 출력하면서 시스템이 종료된다. WAS는 해..
2022.05.29 -
백준 2869: 달팽이는 올라가고 싶다 [Java] - 포포
문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V..
2022.05.28 -
[토비의 스프링 3.1] 1.7 의존관계 주입(DI)
스프링의 IoC에 대해 좀 더 깊이 알아보자. 1.7.1 제어의 역전(IoC)과 의존관계 주입 DaoFactory처럼 객체를 생성하고 관계를 맺어주는 등의 작업을 담당하는 기능을 일반화 한 것이 스프링의 IoC 컨테이너다. 스프링 IoC 기능의 대표적인 동작원리는 주로 의존관계 주입이라고 불린다. 스프링이 여타 프레임워크와 차별화돼서 제공해주는 기능은 의존관계 주입이라는 새로운 용어를 사용할 때 분명하게 드러난다. DI의 핵심은 오브젝트 레퍼런스를 외부로부터 제공(주입)받고 이를 통해 다른 오브젝트와 다양하게 의존관계가 만들어진다는 것이다. 1.7.2 런타임 의존관계 설정 의존관계란? 두 개의 클래스 모듈이 의존관계에 있다고 말할 때에는 항상 방향성이 있어야 한다. 즉 누가 누구에게 의존하는 관계에 있다..
2022.05.28