데이터를 수정하던 중에 이 모든 변경사항을 관리하는 방법은 없을까? 라는 의문이 들었다. 그래서 Aop, EventListener 등 생각을 해보고 관련 정보를 찾아보던 중 Hibernate의 envers라는 모듈을 알게 됐다. 정확히는 김영한님의 envers 모듈 세션을 듣게 됐고 해당 내용을 간략히 정리하려고 한다. 방법은 간단하다. 의존성을 추가하고 이력관리를 하고 싶은 Entity 위에 @Audited 어노테이션을 추가하면 된다. 예제를 통해서 좀 더 자세히 알아보자. Member 정보는 아래와 같다 create table member ( id serial primary key, name varchar ); @Entity @Builder @Getter @NoArgsConstructor(access..
업무를 진행하던 도중 QueryDsl에서 윈도우 함수(row_number)를 사용하려고 했다. 각 테이블의 정보는 아래와 같다 create table member ( id serial primary key, name varchar, team_id integer references team, created_at timestamp default now(), deleted_at timestamp ); create table team ( id serial primary key, name varchar ); 이때 QueryDsl에서 아래와 같은 코드를 실행하면 에러가 발생한다 public List getTeamMemberRows() { SimpleExpression rowNumber = SQLExpressions..
commit의 amend 옵션으로 마지막 커밋을 수정할 수 있다. 목표 이전 포스팅에서 했던 요청 사항을 이번엔 rebase -i 명령어가 아닌 cherry-pick으로 해결해 보자 $git checkout main $git cherry-pick C2 $git commit --amend #C2 커밋 내용을 수정한다 $git cherry-pick C3 커밋들 갖고 놀기 https://while-programming.tistory.com/138 https://while-programming.tistory.com/142 ref https://learngitbranching.js.org/?locale=ko
스프링에서는 트랜잭션을 사용할 때 @Transactional 어노테이션을 사용한다. @Transactional 어노테이션의 속성 중 propagation(전파) 이라는 것이 있는데, 이미 트랜잭션이 진행중일 때 추가 트랜잭션 진행을 어떻게 할지 결정하는 것이 전파 속성(Propagation)이다. 전파 속성에는 총 7가지가 옵션이 있는데 이에 대한 자세한 내용은 https://mangkyu.tistory.com/269 해당 블로그에 자세히 나와 있으니 참고하면 되겠다. 오늘은 이 중 Nested라는 옵션을 사용해보도록 하겠다. 위의 블로그에 나와 있듯이 Nested 옵션은 JPA에서 지원하지 않는다. 따라서 Jpa를 사용하지 않고 단순히 JdbcTemplate을 사용하면 될 것 같지만, 따로 설정을 해주..
- Total
- Today
- Yesterday
