일단 해보고, 아니면 뭐

실패했어도 배웠으면 실패가 아냐.

무한한 개발세계 여행기

java 12

JPA / Hibernate / Spring Data JPA

사용하는 기술에 대한 정확한 개념을 가지고 있는 것이 좋은 코드의 시작점이라고 생각한다. 그래서 나는 내가 사용하는 기술들 중에 여태까지 헷갈렸던? 기술들 세가지(JPA / Hibernate / Spring Data JPA)의 차이점을 정리해보았다. 1. JPA JPA는 기술명세이다. JPA는 Java Persistence API의 약자로, 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 여기서 중요한 것은 말 그대로 인터페이스라는 점이고, 특정 기능을 하는 라이브러리가 아니라는 점이다. 2. Hibernate Hibernate는 JPA라는 명세의 구현체이다. 즉, 위에서 언급한 JPA의 인터페이스를 직접 구현한 라이브러리이다. "Hibernate는 JPA의 구현체이다"..

Programing/Jpa 2022.05.30

Rest Service 개발 시점에서 바라본 Java와 Go 언어의 차이

현재 재직 중인 회사에서는 API Server를 개발하는 팀은 Java + Spring Boot를 사용 중에 있고, Agent를 개발하는 팀은 Go + gRPC를 사용하고 있다. 입사 시즌에는 Go언어가 있다는 것도 처음 들어봤지만, 왜? Java와 Go언어를 사용하는 서비스가 따로 있는지가 궁금해졌고 Rest Service를 개발할때 Java와 Go언어에 어떤 차이가 있는지 알아보고 싶어졌다. 일단.. Java와 Go언어가 어떤 차이점을 가지고 있는지부터 살펴보았다. Java : 객체지향 프로그래밍에 대표적인 언어이며 그만큼 큰 커뮤니티와 수많은 라이브러리들을 가지고 있다. JVM이라는 가상 머신에 의해서 구동되기 때문에 운영체제에 영향을 받지 않는다. Go : 오래된 언어는 아니지만 동시성을 지원하고..

Programing 2022.05.26

Rest 통신 기반의 CRUD Transaction 처리 해보기 (AOP, Generic)

이번에 개발하게 된 Rest 통신 기반의 CRUD Transaction 처리 AOP 를 정리하려고 오랜만에 블로그를 켜보았다. 이게 무슨 처리냐 하면, 기본적인 데이터베이스들은 굉장히 좋은 라이브러리들이 많이 있기 때문에 메소드 레벨에 기능을 담당하는 Annotation 하나만 달면 개발자가 따로 신경쓰지 않아도 Transaction 처리가 아주 잘 된다. 하지만 현재 프로젝트는 Keycloak 이라는 오픈소스를 사용 중이고, 내가 개발중인 서비스에서 keycloak 서비스에 각종 데이터들을 CRUD 할때 Keycloak Rest API 기반 통신 라이브러리를 사용하여 호출하고 있다. 그럼 Keycloak 서비스에서는 본인이 사용하는 데이터베이스에 데이터 CRUD 처리를 한다. 이때 내서비스와 Keycl..

Programing/Spring 2022.05.23