Spring Data JDBC(4)
-
[Spring Data Jdbc] 코틀린에서 wither를 인식하지 못하는 문제
자바에서 Spring Data Jdbc 사용할 때 setter 없이 id를 채워주려면(populate) 다음과 같이 Wither를 만들어주면 된다. @Getter @RequriedArgsConstructor public class Menu { @Id private final Long id; private final String name; private final double price; public Menu(String name, double price) { this(null, name, price); } public Menu withId(Long id) { return new Menu(id, name, price); } }코틀린에서도 다음과 같이 wither를 만들어주면 작동하겠거니 했다. class ..
2020.12.06 -
[Spring Data JDBC] 라이프사이클 이벤트와 콜백(LifeCycle Events & Callback)
CRUD 라이프 사이클 Spring Data JDBC는 CRUD에 해당하는 메서드를 실행할 때, 각각 알맞은 이벤트들을 순서대로 진행한다. CrudRepository.save()(Create, Update) CrudRepository.find() (Read) CrudRepository.delete() (DELETE) Insert/Update/Select/Delete는 실제로 DB에 쿼리를 날리는 시점이다. 콜백 이벤트 하나가 실행되는 것을 이벤트가 발행된다고 표현한다. 모든 이벤트는 발행된 이후에 콜백 함수를 리턴한다. 따라서 CrudRepository.save() 메서드의 실제 라이프사이클은 아래 그림과 같을 것이다. (예외로 BeforeConvert는 이벤트 없이 콜백만을 갖는다) 이벤트와 콜백이 연..
2020.07.11 -
[Spring Data JDBC] Id 삽입 전략
글을 작성하다 보니, 이명현님의 우아한 테크세미나의 한 부분을 정리한 글이 되었다. Spring Data JDBC에 관심이 있다면 한번쯤 꼭 영상을 시청하는 것을 추천한다. Spring Data jdbc를 사용하다보면 id를 insert(populate, generate)하는 방식을 커스텀하게 가져가고 싶을 때가 있다. DB의 auto-increment 기능을 사용할 수도 있고, 직접 만든 UUID를 넣어주고 싶을 수도 있다. 또, 외부에서 받아온 id를 사용하고 싶을 수도 있다. 각각 방식에 대해서 어떻게 하는지 알아보자. Auto Increment DB의 필드에 auto increment를 걸어두고 사용하는 전략이다. 이 경우, 특별히 다른 기술이 필요하지 않다. Spring Data JDBC는 sa..
2020.07.03 -
[Spring Data JDBC] 객체(Object)와 개체(Entity) 대응시키기
객체와 개체 일반적으로 JAVA를 사용하여 코딩을 한다고 하면 객체지향을 활용하게 된다. 이때 객체(Object)는 다른 객체들과 관계를 맺게 된다. 하지만 DB에 저장되는 것은 개체(Entity)이기 때문에 이를 대응시켜주는 기술이 필요하다. Spring Data JDBC는 이러한 방법을 제공한다(링크). 그런데 공식문서의 예시는 너무 빈약하다. 그래서 혼자 이것저것 공부하면서 알아낸 내용들을 풀어보려고 한다. 사용한 버전은 2.0.1RELEASE 버전이다. 기본적인 사용법 // Person.java public class Person { @Id private Long personId; private final String personName; private int age; Person(Long per..
2020.05.11