Back-end
-
[GraphQL] Apollo-Server를 이용하여 프로젝트 시작해보기Back-end/GraphQL 2021. 1. 24. 03:47
GraphQL GraphQL(GQL)은 갓 페이스북에서 만들어낸 쿼리 언어(Query Language) 입니다. 백엔드 개발을 알고 계시다면 SQL(Structed Query Language)에 대해서도 알고 계실텐데요, 왠지 단어도 비슷하고 해서 두 언어가 동일하다고 느낄 수 있지만 전혀 그렇지 않습니다. 먼저 기존에 주로 사용하던 SQL의 경우에는 DB에 존재하는 데이터를 효율적으로 가져오는 것에 중점을 두었고 GQL의 경우에는 클라이언트에서 데이터를 서버로부터 효율적으로 가져오는 것이 목적입니다. 그래서 이전에는 주로 백엔드에서 쿼리를 작성해서 클라이언트로 데이터를 전달해주는 역할을 했다면, GQL을 사용하게 되면 클라이언트에서 직접 필요로 하는 데이터를 호출하고, 사용하게 됩니다. 즉, 프론트의 ..
-
[Node] express-generator로 빠르게 express 프로젝트 세팅하기Back-end/Node 2020. 11. 23. 01:35
Express express는 Node.js 진영의 웹을 개발하기 위한 프레임워크입니다. 2010년에 발표되어 현재까지도 주축으로 사용되는 아주 보편적이고 강력한 오픈소스인데요, 최근에는 express를 만든 팀이 만든 Koa 또한 증가하는 추세입니다. Express-generator express를 사용하기 위해서는 바닥부터 세팅을 해도 되지만 이런 세팅과 환경에 익숙해져있는 개발자라면 처음부터 굳이 세팅하지 않아도 되는 귀찮은 일로 전락하거나, 개발 시간을 뺏어먹는 일이 될 수도 있습니다. 그래서 이런 상황을 극복하기 위해 기본적인 골격을 가지고 있는 프로젝트를 구성하는 것도 하나의 방법인데요 여러가지 Boiler-Plate를 사용하거나 express에서 제공하는 generator를 사용하면 기본적인..
-
Java - HashMap 메소드Back-end/Java 2020. 7. 1. 13:52
HashMap HashMap이란 자료구조의 한 종류로서 Key와 value를 묶어 하나의 entry로 저장한다는 특징을 가집니다. 그리고 hashing을 사용하기 때문에 많은양의 데이터를 검색하는데 뛰어난 성능을 보입니다. 이전 포스팅에서는 ArrayList에 대해서 다루었었는데 이와 동등하게 중요하고 자주 사용되는 자료구조인 HashMap을 살펴보도록 하겠습니다. 작성자인 저 또한 공부하면서 정리하는 부분이기 때문에 틀린 정보가 있을 수 있으니 혹시 틀린점이 있다면 피드백 부탁드립니다. :) 참고자료 : HashMap (Java 8) HashMap 생성 import java.util.HashMap; HashMap map = new HashMap(); HashMap을 사용하려면 객체를 생성해야합니다. i..
-
Java - ArrayList 메소드Back-end/Java 2020. 7. 1. 13:49
ArrayList ArrayList란 자료구조의 한 종류로서 Java에서 가장 많이 사용되는 데이터 스트럭쳐입니다. 알고리즘에서 많이 활용되며, 실무에서 데이터를 다룰 때 입출력하는 부분에서 매우 많은 비중을 차지하고 있습니다. 하지만 이런 ArrayList를 다룰 때 지원하는 메소드를 숙지하고 있지 못하면 ArrayList의 성능을 제대로 활용할 수 없겠죠? 😱 그래서 심화적인 부분은 아니지만 메소드를 활용할 수 있도록 익혀놓는다면 필요할 때 떠올려 관련 자료를 찾아보며 해결할 수 있는 능력이 생길테고, 나중엔 본인 것으로 자연스럽게 남아 언젠간 ArrayList에 통달할 수 있겠습니다! 작성자인 저 또한 공부하면서 정리하는 부분이기 때문에 틀린 정보가 있을 수 있으니 혹시 틀린점이 있다면 피드백 부탁..
-
JPA - JpaRepository.save()Back-end/JPA 2020. 6. 30. 17:29
엔티티 저장하기 내부적으로 save()는 객체가 새로운 객체인지 다른 객체인지 판단을 합니다. Transient(새로운) 상태의 객체라면 EntityManager.persist() Detached(이미있는) 상태의 객체라면 EntityManager.merge() 위 두 가지의 상태를 구분하여 insert 혹은 update를 판단하게 됩니다. Transient와 Detached의 상태 판단은? 엔티티의 @Id 프로퍼티를 찾아서 해당 프로퍼티가 null이면 Transient 상태로 판단하고 id가 null이 아니면 Detached 상태로 판단합니다. 엔티티가 Persistable 인터페이스를 구현하고 있다면 isNew() 메소드에 위임합니다. JpaRepositoryFactory를 상속받는 클래스를 만들고 ..
-
JPA - JpaRepositoryBack-end/JPA 2020. 6. 30. 17:20
스프링 데이터 JPA Repository @EnableJpaRepositories JPA Repository를 사용하기 위해서는 Spring Framework 에서는 @EnableJpaRepositories 애노테이션을 사용해야 JpaRepository 인터페이스를 상속받은 Repository 인터페이스 타입의 Proxy 빈들을 등록해줍니다. 하지만 스프링 부트 사용할 때는 사용하지 않아도 자동 설정이 되므로 따로 세팅하지 않아도 됩니다. 스프링 부트를 사용하지 않을 때는 @Configuration과 같이 사용합니다. @Repository @Repository애노테이션은 JpaRepository의 기본 구현체인 SimpleJpaRepository가 가지고 있기 떄문에 또 사용하지 않아도 됩니다. Simp..
-
JPA - Common Pageable, SortBack-end/JPA 2020. 6. 30. 17:19
스프링 MVC HandlerMethodArgumentResolver 스프링 MVC 핸들러 메소드의 매개변수로 받을 수 있는 객체를 확장하고 싶을 때 사용하는 인터페이스로 이번에 실습해볼 Pageable과 Sort를 매개변수로 사용할 수 있습니다. 참고자료 : 레퍼런스 페이징과 정렬 관련 매개변수 page: 0부터 시작. size: 기본값 20. sort: property,property(,ASC|DESC) 예) sort=created,desc&sort=title (asc가 기본값) Pageable, Sort @RestController public class PostController { @Autowired private PostRepository postRepository; @GetMapping("/p..
-
JPA - Common DomainClassConverterBack-end/JPA 2020. 6. 30. 17:18
DomainClassConverter 하나의 타입을 다른 타입으로 변환하는 인터페이스로서 엔티티 혹은 ID를 각각의 타입으로 자동으로 변환해줍니다. 컨버팅에는 2가지 종류가 있습니다. ToEntityConverter: 어떠한 Entity의 Id를 받아서 그 Entity 타입으로 변환하는 Converter입니다. ToIdConverter: Entity를 그 Entity의 Id 타입으로 변환하는 Converter입니다. 침고자료 : 레퍼런스 Entity, Repository, Controller 생성 @RestController public class PostController { @Autowired private PostRepository postRepository; @GetMapping("/posts/{..