본문 바로가기

Programming134

[6/7 TIS] DELETE는 Transactional하게 진행하자. 엔티티를 delete하는 로직을 만들던 중 다음과 같은 에러를 마주했다. No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call 대충 보아하니 remove를 안정적으로 할 수 없다는 말이 있었고, transaction이라는 키워드가 눈에 밟혔다. 해당 에러 메세지를 검색해보니 @Transactional 애너테이션을 통해 delete메서드를 수행하는 로직 자체를 트랜잭션 처리하면 삭제가 정상적으로 수행된다고 했다. 그대로 수행했고, 문제 자체는 쉽게 해결했다. 그런데, 왜 삭제 로직은 트랜잭션 처리를 해야하는지가 궁금했다. 삽입, 수정, 조회는 잘 되는데. 라고 생각.. 2023. 6. 7.
[4/26 TIS] 테이블 이름은 User로 짓지 말자. 부트캠프에서 배운 내용을 가지고 복습 차원에서 가벼운 싱글 프로젝트를 시작했다. 문제는 시작하자마자 발생했다. User 엔티티를 만들고, 컨트롤러에서 Post 요청을 받아 처리하고 만들어진 엔티티를 저장하려고 하는데 시작도 전에 에러 메시지를 먼저 마주했다. Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "DROP TABLE IF EXISTS USER[*] CASCADE "; expected "identifier"; SQL statement: drop table if exists user CASCADE [42001-206] Error executing DDL "alter table stamp add con.. 2023. 4. 27.
오늘의 삽질을 기록하며 많은 분들이 그날 그날의 학습을 기록하기 위해 TIL(Today I Learned)을 작성한다. 삽질일지는 TIL과 비슷하다. 다만, 공부한 것 뿐만 아니라 내가 마주한 에러와 그 에러를 해결하기 위한 과정을 담으려고 한다. 그래서 삽질일지다. 이름은 TIL과 비슷하게 TIS다. Today I Shoveled의 줄임말이다. 나는 오늘 어떤 삽질을 했을까? 2023. 4. 26.
25. 기타 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * count 메서드 갯수를 세는 쿼리(COUNT)를 실행하는 메서드이다. long count() : 전체 갯수를 센다. long countByNameLike(String keyword) long count(Specification spec) : 스팩으로도 셀 수 있다. * @Query 네이티브 쿼리 @Query 애너테이션에 JPQL이 아닌 SQL을 작성하고 실행할 수 있다. @Query( value = "select * from user u where u.create_date >= date_sub(now(), interval 1 day)", nativeQuery = true) // nativeQue.. 2023. 4. 18.
24. Specification을 이용한 검색 조건 지정 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * Specification 검색 조건을 생성하는 인터페이스다. Criteria를 이용해서 검색 조건을 생성한다. public interface Specification extends Serializable { @Nullable Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder builder); } 리포지토리 Specificatoin을 이용해서 검색 조건을 지정한다. List findAll(Specification spec) public interface UserRepository extends Repository { List.. 2023. 4. 18.
반응형