Project/시네마그램(28)
-
MyBatis와 JPA의 차이, JPA를 선택한 이유는
현재 면접 스터디를 진행 중에 있습니다.개인 프로젝트 관련해서 받았던 질문들 중 대답을 잘하지 못했던 부분들은 따로 정리하고자 합니다. 질문 이력서에 기재된 두 포트폴리오를 통해 JPA와 Mybatis 모두 사용해 봤던데, 기술의 차이점이나 Mybatis나 JPA를 쓰실 때 어떤 이점을 기대하고 사용하신 건지 말씀해 주세요. 😅 어떤 생각으로 두 기술을 사용했냐면..국비 과정에서 팀 프로젝트를 할 땐 배웠던 게 Mybatis여서 다른 선택지를 고려하지 않고 사용했습니다. 그 당시 코드를 작성할 때 느꼈던 점은 여기저기 클래스마다 sql을 작성했기에 정작 중요한 로직을 한 눈에 파악하기 어렵고 복잡했다는 것입니다. 다행히 프로젝트는 성공적으로 끝났지만 유지보수를 어디서부터 해야 할지 막막해..
2023.03.28 -
JPA와 Spring data JPA 차이점 (+ Hibernate)
현재 면접 스터디를 진행 중에 있습니다.개인 프로젝트 관련해서 받았던 질문들 중 대답을 잘하지 못했던 부분들은 따로 정리하고자 합니다. 질문Skills 소개란에 JPA, Spring Data JPA 적혀있는데 둘의 차이점을 알고 있나요? 😅 사실..비슷해 보이는 용어의 차이점을 알고 있는지 확인하는 질문입니다. 개인 프로젝트를 진행하면서 JPA와 Spring data JPA를 사용했지만 그당시 명확한 차이점을 말할 수 없었습니다. 왜일까..?JPA 공부를 하다보면 EntityManager를 통해 entity관련 CRUD를 한다고 나와있습니다. 하지만 저의 경우 실제 애플리케이션 코드 구현시 EntityManager를 사용하지 않고 Repository 인터페이스를 사용했었는데요. 이유가 어..
2023.03.27 -
JPA Entity클래스에서 id를 int가 아닌 Long 타입으로 하는 이유
현재 면접 스터디를 진행 중에 있습니다.개인 프로젝트 관련해서 받았던 질문들 중 대답을 잘하지 못했던 부분들은 따로 정리하고자 합니다. 질문코드를 봤는데, 개인 프로젝트에서 엔티티 id가 전부 int형을 썼던데 이유가 있었는지 궁금합니다. 🤔 해당 프로젝트를 할 때는 인지하지 못했지만, 다른 분들의 코드를 보면 JPA Entity 클래스에서 id를 Long타입으로 설정한 것을 심심치 않게 볼 수 있었습니다. 그런데 왜 long이 아닌 왜 Long타입을 사용했을까요? 구글링을 했을 때, 크게 두 가지 이유로 Wrapper Class(Long)을 선호한다는 것을 알게 되었습니다. 1. null을 사용할 수 있다.primitive type은 기본값이 0입니다. 그럼 id가 없을 때는 나타낼 ..
2023.03.27 -
[Error] Docker 컨테이너 연결시 : Communications link failure
언제 발생했는지도커파일을 도커이미지로 빌드 후 도커 컨테이너 생성 및 실행하는 과정에서 에러가 발생했습니다. docker run [도커허브 아이디]/[프로젝트명] -p 8080:8080 에러 메시지에러 메시지는 다음과 같습니다.com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.Connection refused (Connection refused)..... 맨 마지막 에러 메시지Ac..
2023.03.22 -
[Docker] docker mysql 포트 충돌 에러 (feat. 3306)
도커 컨테이너 생성 시 3306 포트는 이미 사용 중이라 정상적으로 생성되지 못하고 에러가 발생했습니다. Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/networ k address/port) is normally permitted. cmd를 이용해 어떤 프로세스가 3306을 사용 중인지 확인해 보겠습니다.netstat -ano | findstr :3306TCP 0.0.0.0:3306 0.0.0.0:0 ..
2023.03.09 -
[Cinemagram] 공통기능은 묶어보자 AOP, 마지막 확인 - (16)
이번 포스팅은 Cinemagram의 마지막포스팅입니다.물론, 계속해서 리팩터링 하거나 기능을 추가할 예정이지만 우선 이렇게 막을 내리고 추후에 작업을 해서 올리도록 하겠습니다. AOP란?Aspect Oriented Programming의 약자로 관점 지향 프로그래밍입니다. 그렇다고 객체지향프로그래밍은 버리겠다는 것이 아니라 추가로 적용 가능합니다. 예를 들어보겠습니다. 로그인 기능, 회원가입 기능을 구현하고자 할 때 로직을 기술해 보면 다음과 같습니다.핵심기능로그인 로직회원가입 로직1. username, password입력1. username, password, email, name입력2. DB에 SELECT쿼리 보냄2. DB에 INSERT함3. 로그인(세션) 두 기능의 핵심기능은 다르겠지만 공통적으로..
2023.02.13