본문 바로가기
반응형

전체 글124

[Git] 깔끔한 Git 커밋 히스토리 관리를 위한 커밋 스쿼시와 리베이스 작업 commit sqaush (커밋 히스토리 합치기) 커밋 스쿼시를 통해 여러 개의 작은 커밋을 하나로 합치는 방법을 살펴보겠습니다. 작업 과정에서 많은 작은 커밋을 생성하게 되는데, 이를 스쿼시하여 하나의 의미 있는 커밋으로 만들면 커밋 히스토리가 더 깔끔해지고 추적하기도 쉬워집니다. Before Squash: A---B---C---D feature After Squash: A---BCD feature Git command: 깃 명령어 $ git rebase -i HEAD~n 여기서 n은 squash를 적용할 커밋의 수입니다. 예를 들어, 마지막 3개의 커밋을 squash하려면 git rebase -i HEAD~3을 실행합니다. 위의 명령어를 실행하면 Git은 편집기를 열어서 선택한 커밋 목록이 나타납니다.. 2023. 7. 27.
[Spring] AOP에서 컨트롤러에서 JSON을 반환하는 지 확인하는 방법 / Class, Method에 특정 어노테이션이 있는지 확인하는 방법 Controller에 들어오는 파라미터와 응답하는 코드를 로그로 남기고, DB에 저장하려고 AOP를 이용했다 이때, 컨트롤러에서 데이터를 반환할때 @RestController, @ResponseBody 어노테이션이 있는 경우 JSON 형식으로 반환하는데 이걸 체크하기 위해서 아래 코드를 사용하여 확인했다 핵심은 리플렉션을 이용하여 정보를 확인하는 것! getClass().isAnnotationPresent(RestController.class); getMethod().isAnnotationPresent(ResponseBody.class); private boolean isJsonReturn(ProceedingJoinPoint joinPoint) { // @RestController 인지 확인 boolea.. 2023. 7. 14.
[IntelliJ] Git Shelve / Git Stash 차이 깃을 사용하며 브랜치 이동 시 임시저장은 주로 stash 기능을 사용했는데, 인텔리제이에서는 다른 브랜치로 체크아웃시 shelve에 저장해주길래 차이가 뭔지 궁금해서 찾아봤다 :) IntelliJ의 Git Shelve와 Stash 공통점 : 변경 내용을 일시적으로 저장하는 기능 Git Stash 변경사항 저장 방법 : Git -> Uncommitted Changes -> Stash Changes 변경사항 불러오는 방법: Git -> Uncommitted Changes -> Unstach Changes -> 원하는 스태시 선택해서 적용 변경 내용을 일시적으로 저장하고 나중에 다시 적용할 수 있는 기능 변경 내용을 커밋하지 않고 저장할 수 있으며, 나중에 다시 변경 내용을 적용할 수 있음 Git Stash를.. 2023. 4. 12.
[Spring] @Transactional 핵심 정리 / 우선순위, 프록시, 예외 @Transactional 우선순위 1. 클래스의 메서드 2. 클래스의 타입 3. 인터페이스의 메서드 4. 인터페이스의 타입 -> 인터페이스에는 @Transactional을 쓰지 않는 것이 좋다(스프링5.0 이하에서 인식X, 다른 AOP 방식에서 적용 안 될 가능성) @Transactional과 프록시 - @Transactional 애노테이션이 클래스나 메서드에 하나라도 있으면 트랜잭션 AOP는 프록시를 만들어서 스프링 컨테이너에 등록 - 동일 클래스 내에 @Transactional이 붙지 않은 메서드를 호출 후 @Transational이 붙은 메서드를 호출할 때 트랜잭션 적용 안됨 이유: @Transactional이 있는 클래스는 프록시가 만들어짐.. 1) 프록시의 메서드(@Transactional X.. 2022. 11. 26.
[MyBatis] 오라클 프로시저 호출 시 NullPointerException 발생 조치 # 프로시저 호출 { call procedure_name (#{param1},#{param2}) } # NullPointerException 에러 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.NullPointerException ### The error may involve ~~ Inline ### The error occured while setting paramteters ### Cause: java.lnag.NullPointerException # 조치 방법 괄.. 2022. 11. 7.
[JPA] 변경감지와 병합(merge) 준영속 엔티티 식별자가 존재하지만 영속성 컨텍스트가 더는 관리하지 않는 엔티티 - JPA가 관리하지 않는다 - 변경감지가 일어나지 않는다 준영속 엔티티 수정하는 방법 1. 변경 감지 기능 사용 1) id 식별자를 이용해서 기존 entity를 조회 2) 조회한 엔티티는 영속성 컨텍스트에서 관리됨 3) 조회한 엔티티에 setter를 이용해서 값을 넣어주면 트랜잭션 커밋 시점에 flush를 날리면서 변경 감지 작동 2. 병합(merge) 사용 em.merge(item); JPA가 준영속 엔티티의 식별자 값으로 영속성 컨텍스트에서 entity를 찾고 없으면 DB에서 조회 후 모든 필드를 바꿔줌 (1번에 적어놓은 과정을 모두 JPA가 알아서 해줌) 주의! 병합을 쓸 경우 모든 필드를 교체 [꿀팁 번외편] 데이터를.. 2022. 10. 26.