728x90
반응형

오랜만에 새벽 5시까지 컴퓨터와 한 몸이 되었다..
 
상쾌한 마음으로 도서관을 나서려는데
자동차 배터리가 완전 방전되어 버리는 바람에
1시간동안 시동 유지를 위해 도서관 지하 주차장에서
김영한 강사님의 인생에 대한 영상을 보게 되었다.
 
아직까지 국내에서는 마이바티스가 비중이 높지만
전세계적으로 트렌드는 JPA인 것은 들어본 적이 있다.
DB 연결을 위한 초기 세팅부터 직접 쿼리 작성이 필요한
고전적인 방식부터 JPA를 통한 개발을 해본 입장에서
JPA로 개발 할 경우 개발 생산성이 올라간다는 말씀이 와닿았다.
마이바티스는 초기 세팅이 처음엔 어려웠는데
사실 반복적으로 하다보면 익숙해졌던 것 같다.

영상 초반에 와이프분이 출산을 8개월 앞둔 그 시절을
회상하시면서 애기가 8개월 뒤 배포가 된다는 말에
혼자 웃음이 터졌다👶🏻
 
앞으로도 개발자의 길을 걸으면서

Why?


왜?
왜 이거를 사용하지?
왜 이렇게 동작하지?
..
항상 왜?라는 의문을 갖고 주어진 상황을 고민하고
해결해나는 습관을 들여야겠다.

구직활동에도 적용이 되는 부분이라고 생각한다.
기업에서 왜 나를 뽑아야하지?
주어진 이력서와 자기소개서, 포트폴리오만으로
나라는 사람을 전부 파악할 수 없지만
이 주어진 내용을 보고 나라는 사람에 대해서
궁금하게 만들어야겠다.
그러기 위해서는 여전히 공부가 많이 필요하겠다.

김영한 강사님의 인생 2부가 기다려진다 :)
 

한국 개발자 최고 1타 강사 김영한의 인생 [1부]

 

728x90
반응형
728x90
반응형

기쁜 소식
내 티스토리를 검색했는데
2주 전에 작업했던 사이트 검색 설정이
짠 하고 결과를 나타내줬다.

코딩하는 미미
(코개미 - 코딩하는 개발자 미미)


예전에는 네이버 블로그로 간간히 일상만 올렸지만
이제는 개발자로서 꾸준히 공부한 내용들과
회고, 일상 글을 업로드하려고 한다.

공고를 열심히 둘러보다보니 내가 생각한대로
리눅스 유경험자 우대 공고가 굉장히 많았다.
나는 데스크탑과 노트북에서 윈도우를 쓰다보니
작업물들이 전부 윈도우 기반인데 리눅스도 배워서
새로운 환경에서 다양한 프로젝트를 작업해봐야겠다.

 

자소서와 포트폴리오까지 거의 마무리하면서
노션폴리오를 PPT로 변환하는데 생각보다
기존 틀이 깨지는 바람에 수정하느라 추가적으로
시간이 꽤나 지나버렸다.
(하루 꼬박..그와중에 프로젝트도 보완해나가는중)

728x90
반응형
728x90
반응형

Spring Boot로 프로젝트를 진행하면서

JPA를 활용해 코드를 작성하다보면 코드가 간결해져서

효율적으로 시간 분배하며 프로젝트를 진행할 수 있었다.

가끔은 하드코딩으로 처음세팅과 DB 연결부터

쿼리 작성까지했던 MyBatis가 조금은 그립다는 생각을 했다.

JPA를 다룰줄은 아는데, 내가 알고 있는 개념이 모호한 것 같아서

정확한 이해도를 잡기 위해 JPA 연관 기능들의 개념과 차이점을 정리해본다.

 

JPA, Spring Data JPA, Hibernate

- 모두 자바에서 관계형 데이터베이스와 상호 작용하기 위한 기술이지만 서로 다른 개념과 역할을 갖고 있다.

 


JPA (Java Persistence API)
- Java에서 데이터베이스와 상호 작용하는 자바 표준 API
- 데이터베이스 테이블과 자바 객체 간의 매핑을 처리하며, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 매핑을 담당
- 인터페이스와 추상 클래스로 이루어져 있으며, 구현체는 제공하지 않음.
  대표적인 JPA 구현체 : Hibernate, EclipseLink, Apache OpenJPA 등


Hibernate
- JPA 스펙을 구현한 JPA 구현체 중 하나
- JPA를 구현한 라이브러리로서, JPA 스펙을 준수하면서도 JPA 스펙 외의 기능과 확장성을 제공
- 영속성 관리, 객체와 테이블 간의 매핑, 데이터베이스 쿼리 작성 및 실행, 캐싱 등을 제공

 

Spring Data JPA
- Spring 프레임워크와 JPA를 결합하여 사용하기 쉽게 만든 프로젝트
- 개발자가 JPA를 더 쉽게 사용하고 반복적인 작업을 줄이도록 돕는 목적으로 만들어졌습니다.
- JPA 리포지토리를 생성하고, 쿼리 메소드를 정의하며, 데이터베이스 액세스 작업을 단순화합니다.

 

 

출처 : docs.jboss.org

요약
JPA  자바 표준 데이터베이스 액세스 API
Hibernate  JPA 구현체 중 하나
Spring Data JPA Spring 프레임워크와 JPA를 연동하여 JPA를 더 쉽게 사용할 수 있도록 돕는 프로젝트

개발 환경과 요구사항에 따라 이러한 기술을 선택하고 결합하여 사용하면 된다.

 

 

 

참고하면 좋을 레퍼런스

https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html

728x90
반응형
728x90
반응형

응애 신입 개발자의 회고
그간 개발 공부 내용, 트러블슈팅 및 개발 팁과 같이
개발적인 부분 위주로 포스팅했는데
앞으로 나아갈 나를 위해 회고하는 글을 작성해 본다.

개발자로 가는 길


이력서와 자소서, 포트폴리오를 마무리하기 위해
다양한 사람들의 이력서, 개발 블로그들을 둘러보면서
긍정적인 자극을 많이 받았다.

나의 장점이자 단점이 되는 꼼꼼한(완벽주의) 성향은
일단 내가 아쉬우면 만족할 때까지 집요하게 붙잡고
끝낼 때까지 놓지 않기에..

자소서와 포트폴리오에 내가 가지고 있는 역량을
최대한으로 어필하고 싶다는 욕심이 컸다.

 
하지만 옛 말에 사공이 많으면 배가 산으로 가고
과유불급이라고 하기에
핵심만 간추려보니 어느덧 작성이 마무리되어 간다.
면접 준비를 더 열심히 해야겠다.
 
 

공부하면서 느낀 점

- TDD 개발의 중요성
파이널 프로젝트를 개발하면서, 프로젝트 데이터 로직 관련해서
프로젝트 실행 후 웹 사이트에서 어떠한 값을 입력하고
데이터베이스 저장 값을 직접 체크하는 것과 같이 무수히 많은 테스트를 했었다.
TDD를 좀 더 빨리 학습하고 반영했으면
노가다성의 번거로운 방식의 테스트 시간을 줄이고
더 효율적으로 했었겠다는 아쉬움이 있다.
생각해 보면 거의 사용자단 위주로 테스트를 진행했었던 것이다.
앞으로는 개발자 관점까지 포괄해서 테스트코드 작성 방법을 활용하여
프로젝트에서 테스트할 때 접목시켜야겠다.
TDD 개발방법론 숙지 별표!

- 프로젝트 설계의 중요성
이 부분도 파이널 프로젝트에서 크게 느꼈던 부분인데
프로젝트 완성 10일 전 ERD 구성에서 큰 문제점을 깨달았다. 우선 ERD를
외래키 설정을 PK로 설정했어야 하는데
3명 정도 합류하여 작성했던 ERD에서
중복 값이 들어가는 닉네임으로 설정한 것이 실수였다.
(나는 처음부터 ID로 하자고 했었는데.. 왜 때문에 닉네임으로 채택했던 걸까
곰곰이 생각해 보니 그 당시 데이터 조회까지 설계하면서 고려했는데
join이 필요한 테이블에서 사용하는 값을 생각해서
그 값을 연결시켜 버렸던 것 같다. 아마 큰 착각을 했던 것이겠다.)
앞으로 혼자 사이드 프로젝트를 진행하면서,
혹은 회사에서 주어진 업무를 수행함에 있어서
전체적인 그림을 먼저 정확하게 그려보고 시작해야겠다.
 
- 협업의 즐거움(Git 형상 관리 툴을 사용하면서 크게 느낀 부분)
파이널.. 프로젝트.. 애정이 매우 컸던 제대로 끝내본 팀 작업 결과물이라 그런가 느낀 점이 매우 많다.
사람 자체를 좋아하고, 함께 무언가 해내는 것을 좋아하는 나로서 이 프로젝트를 진행하는 과정이 굉장히 즐거웠다.
특히 내가 만든 페이지에 공동으로 작업이 필요한 경우가 좀 있었는데
Git pull - Git push 과정에서 꾀나 충돌이 많았다.
처음에는 마냥 무서웠던 그 충돌의 상황이 차근차근 충돌을 해결해 나가는데
서로가 작업한 코드를 추가하면서 코드 공유도 됐고
merge 작업 후 정상적으로 pull도 받고 push도 했다.

아, 그리고 거의 반 이상의 팀원이 겪었던 실수가 있다.

초기에 작업할 때 branch checkout이 빈번하게 필요한 작업이 있었는데

본인 branch가 아닌 stream이라는 main으로 넘기기 전 중간 통로 역할의 branch checkout 상태로

열정적으로 작업하다가 작업물이 꼬였던 상황이 있었다.

다행히도 좀 더 반복적으로 작업을 하면서 더 이상 같은 실수는 없었고

오히려 이런 경험을 해봄으로써 주의해야 할 점이라던지

잃어버린 코드를 되돌리거나 commit 취소 등 여러 가지 Git의 기본 기능들에 대해서 파악할 수 있었던 것 같다.

 

작업할 때 branch는 꼭 꼭 항상 확인할 것

 

협업하면서 모르는 부분은 서로 도와주고, 더 나은 코드로 바꾸는 것을 제안하고

또 그것을 받아들이면서 작업했던 것이 굉장히 좋은 경험이 되었다.

728x90
반응형

'Daily > reminiscence' 카테고리의 다른 글

[회고] 20231201 취업 2주차, 12월의 시작  (0) 2023.12.01
[회고] 20231109 SQLD 시험을 앞두고  (0) 2023.11.09
728x90
반응형
TDD : Test Driven Development

TDD 테스트 주도 개발에  대해 큰 그림을 그리며 배워보고자 인프런 강의를 듣는데

빌드에서부터 실패하는 트러블슈팅을 겪었다.

버전 세팅이 잘못되었거나 Build 세팅이 Gradle로 되어있어서 그런가 싶어서

변경해보았는데도 나 같은 경우 해결이 되지 않았다.

 

 

에러 내용 : 

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'com.tddpj.productorderservice.ProductServiceTest'. at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:54) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94).

 

 

해결 :

인텔리제이 기준 메뉴 Help > Edit Custom VM Options에서

-Dconsole.encoding=UTF-8 코드 하나 추가해주었다.

기존에는 위 두 개 값이 기본 세팅으로 되어 있었다.

빌드 실패했던 이유는 이 추가 설정 없이

PC 경로에 한글이 존재해서 그런 것 같다.

 

 

빨간불보다는 초록불이 좋아요.

반갑다 초록불

 

 

참고한 링크

https://www.inflearn.com/questions/459145/gradle-build-%EA%B4%80%EB%A0%A8-%EC%98%A4%EB%A5%98-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4-testsuiteexecutionexception

728x90
반응형

+ Recent posts