일단 해보고, 아니면 뭐

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

무한한 개발세계 여행기

Programing 21

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

Spring 양방향 Dependency Injection

핑계라면 핑계겠지만, 개발 일정에 쫓겨가며 부랴부랴 개발을 하고 있던 시절이 있었다. 최대한 노력하며 보기 좋고 깔끔한 코드를 짜고자 했지만, 일이 터지고 말았다. 로컬에서 개발과 테스트를 마친 후, 개발서버에 배포를 했는데 프론트앤드 개발자분에게 바로 메신저가 왔다. 'API 응답이 안오는데요? 제품 로그인이 안되네요.' 나는 로그인쪽을 수정하지 않았기에 내가 원인이 아닐 거라는 생각만 가지고 원인 파악을 들어갔다. (대체 누구야 라는 건방진 생각도 했다지) 로그를 까고 보니 서버는 기동조차 하지 못하고 기동중에 죽어버렸던 것이다. 마지막 서버 로그를 확인해보니 StackOverFlowError 무한참조... 어쩌고... 로그를 내면서 내가 구성한 서비스들끼리에 순환 참조 관계를 그림으로 나타내주었는데..

Programing/Spring 2022.05.29

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