요즘은 maven보다는 gradle을 쓰는 편JSP보다는 Thymeleaf(뷰)를 쓰는 편 -> 추후 설명 H2는 mysql보다 설치,개발에 용이Lombok은 Getter, Setter 등 반복되고 지루한 코드 생산을 줄여주는 라이브러리Springboot 플러그인은 라
엔티티 설계 알게 된 점 setter은 가능하면 사용하지 말자. -> 변경 포인트가 너무 많아서 유지보수가 어렵다. 모든 연관관계는 지연로딩으로 설정 -> 즉시로딩(EAGER)은 예측이 어렵고, 연관된 db내용을 다 불러옴. (n+1문제 생김) 따라서, 실무에서는
알게된 점 private로 repository field injection 할 때, 이렇게 해주면, repository 객체 바꾸기 까다롭다. 1-1. 그래서 setter를 써서 바꿀수 있다. 그렇게 될 겨우, test코드 작성할 때, Mock객체 생성하기도 쉽다.
class이름에서 shift + ctrl + t 쓰면, 해당 class의 test 파일 생성가능editor > live template로 test코드 단축키 저장해놓으면 편리given + when + then
sql을 다루지않고, business logic에서 data만 바꾸면, jpa가 알아서 바뀐 변경 포인트들을 dirty checking(변경된 감지)가 일어나서, database에 업데이트 쿼리를 촥촥 넣어준다.
BindingResult result 를 사용하면, 안에 오류가 나도, result 내용이 담긴채로 실행된다.따라서, 를 통해서 에러를 받으면, 다음 동작을 실행하게끔 해줄 수 있다.
( 프로젝트 진행하면서 관련 내용 꼭 써야지 했었는데... 미루고 미뤘던 내용을 오늘 써보려고 한다 )프로젝트 1차 마무리 이후, 코드가 많이 별로였다는 것을 느끼고 리팩토링을 진행중이다 😥처음 Spring 사용하면서 @Transactional에 대해 신경을 안 썼었
AOP 등장 배경 코드를 작성하다 보면, 비즈니스 로직외에 부가기능을 담당하는 코드를 작성할 때가 종종있다. 사진에서는 빨간색 박스 외에 나머지 코드 실행 시간을 체크하는 로직을 인프라 로직이라고 한다. 인프라 로직 애플리케이션 전 영역에서 나타날 수 있음 중복코드를
Bean이란? Spring은 DI를 사용하여 객체를 직접 생성하는게 아니라 외부에서 생성한 후 주입시켜주는 방식을 사용한다. 이 DI를 통해 모듈간의 결합도는 낮아지고 유연성은 높아지게 된다. Spring에서는 이 객체를 Bean이라고 부르며, 프로젝트가 실행될 때 B
배치 애플리케이션이란? 일정 주기로 실행해야 할 때 실시간 처리가 어려운 다량의 데이터를 처리해야 할 때 → 이런 작업을 하나의 애플리케이션에서 수행하면 성능 저하를 유발할 수 있으니 배치 애플리케이션을 구현한다.
Spring Batch에 대해 알아보다가, 실패한 동작을 자동으로 다시 호출해서 이어서 진행해주는 기능이 너무 좋아보였다. 그러다가 Spring Framework에서는 그 기능만 사용할 수 없을까?
이 글은 우아콘2020 QueryDSL 영상을 보고 작성한 글입니당🙂 SQL에서 exists를 사용할 경우 해당 조건을 찾으면 바로 쿼리가 종료되고 데이터를 반환하지만, QueryDSL에서의 exists는