spring(5)
-
[Kotlin] inline class
Inline class 왜 등장했나? 자바는 int, double 등 원시 타입이 존재하고 Integer, Double과 같은 원시 타입의 래퍼 클래스가 존재한다. 코틀린은 직접적인 래퍼 클래스를 제공하지는 않지만 Int, Double 등의 클래스는 필요에 의해 boxing 또는 unboxing 되며 때로는 원시타입처럼 때로는 래핑타입처럼 동작한다. 그런데 값 객체를 감싸서 사용하는 경우에 성능저하가 일어나는 문제가 발생하기 시작했다. 예를 들어, 갯수를 세는 객체를 class Count(val value: Int)이라는 클래스로 감싸서 사용하고 있었는데, 이 객체가 코드 상에서 너무 많이 생성되고 사라지는 빈도가 높다보니 JVM에 너무 많은 부하를 주는 것이다. 특히 Int 같이 원시타입으로 동작하는 ..
2021.04.09 -
[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 -
[Jackson] Jackson 파싱 전략(불변 객체 활용)
웹 프로그래밍을 하다보면 Json을 객체로, 객체를 Json으로 변환해야 할 일이 많다. Spring boot는 이러한 오브젝트 매핑의 기본 전략으로 Jackson을 사용한다. 별다른 설정 없이 Spring boot를 사용한다면 Jackson을 사용하고 있는 것이다. ObjectMapper 활용 Jackson은 오브젝트 매핑을 위해 ObjectMapper라는 객체를 제공한다. new ObjectMapper()를 통해 생성할 수도 있고, 스프링 컨테이너를 통해 주입받을 수도 있다. 객체를 JsonString으로 변환하고 싶으면 Objectmapper.writeValueAsString(object) 메서드를 사용하면 되고, 반대로 JsonString에서 객체로 변환하고 싶으면 ObjectMapper.read..
2020.07.12 -
[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 -
JPA vs JDBC, JPA vs Mybatis, JPA vs Spring Data JPA의 차이점과 Hibernate
Spring은 DB에 접근하기 위해 자바의 API를 사용한다. 웹 서비스에 필요한 기능들이 추상화돼서 Spring이 만들어졌듯이, DB에 접근하는 기술들도 일종의 추상화 과정을 거치며 진화해 나갔다. 이 부분을 처음 공부하는 사람 입장에서는, 비슷해 보이면서 다른 단어들 때문에 개념이 굉장히 헷갈린다. JPA를 검색했는데 뜬금없이 Hibernate에 관한 포스팅만 쏟아지기도 한다. 그런 사람들에게 도움이 되고자 간단하게 주요 단어들과 개념들을 포스팅해보려고 한다. (각 개념에 그림과 코드를 첨부했다. 그림에서 초록색 부분은 개발자가 코드 상에서 직접 다뤄야하는 부분이다) JDBC JDBC는 DB에 접근하고, SQL을 날릴 수 있게 해주는 자바의 표준 API다. 자바 진영에서 DB에 접근하는 기술들의 근간..
2020.04.25