본문 바로가기

분류 전체보기

(35)
JPQL JPQL은 JPA에서 사용하는 쿼리로, 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리이다.테이블 member_tb가 있고 해당 테이블과 매핑되는 Member 엔티티가 있다고 할 때,회원 데이터를 전체 조회하는 SQL 쿼리와 JPQL을 표현하자면, 다음과 같다. SQLSELECT * FROM member_tb JPQLselect m from Member as m 이처럼 JPQL은 객체인 Member 엔티티를 대상으로 하며, 별칭은 필수이다. [ 조회 ]SELECT 절에 조회할 대상을 지정하는 것을 프로젝션이라 하는데 프로젝션 대상에는 엔티티, 임베디드 타입, 스칼라 타입이 있다.SELECT (프로젝션 대상) FROM (엔티티) 쿼리를 실행하는 쿼리 객체로는 TypedQuery와 Query가 있다. ..
지연 로딩 영속성 컨텍스트의 주요 기능인 지연 로딩에 대해 정리하고자 한다. JPA에서는 테이블 간의 관계를 엔티티에 표현할 수 있고,하나의 테이블을 조회할 때 연결된 다른 테이블을 함께 조회할 수 있다. 회원 테이블과 팀 테이블이 있을 때, 하나의 팀에는 여러 회원이 있을 수 있으므로 다대일의 관계를 가지고 있다.두 테이블의 관계를 엔티티에서 아래 코드와 같이 표현할 수 있다.@Entitypublic class Member { @Id @Column(name = "MEMBER_ID") private Long id; private String username; @ManyToOne(fetch = FetchType.EAGER) // Member 기준으로 다대일이므로 @ManyToOne이다. @Joi..
영속성 컨텍스트 정리 # 영속성 컨텍스트 # 엔티티 매니저 # 엔티티의 4가지 상태 # flush JPA에서 주요한 개념인 '영속성 컨텍스트' 는 다양한 기능을 제공합니다. 영속성 컨텍스트는 엔티티의 생명주기를 관리하는 공간으로,캐시처럼, DB에서 조회한 데이터(엔티티)는 보관하여 같은 데이터를 더 빠르게 접근할 수 있게 해주고버퍼처럼, 데이터(엔티티) 등록/수정/삭제 쿼리를 저장했다 한 번에 보냄으로써 성능을 향상시켜줍니다.또한, 데이터(엔티티) 변경 사항을 감지하여 update 쿼리를 자동으로 만들어주기도 합니다. 이 기능은 '영속 상태'일 때만 동작합니다. '엔티티 매니저'는 아래 그림처럼 여러 함수를 이용하여 엔티티의 생명주기를 관리합니다.엔티티의 4가지 상태 (엔티티는 테이블에 대응하는 클래스입니다.)1. 비영속(N..
Run on Server가 보이지 않는 문제 프로젝트를 이클립스에 import 후 서버에 올릴려 했으나.. 올려지지 않았다. 서버에 잘 올라가는 프로젝트와 비교했을 때 Deployment Descriptor가 보이지 않았다. Deployment Descriptor는 web.xml 파일로, 기존 프로젝트를 import하기 때문에 해당 파일을 가지고 있었다. 인식이 안되는건가..? 생각하며 구글링 한 결과,프로젝트 구조, 설정을 관리하는 Dynamic Web Module이 없다는 것을 알게 되었다. Dynamic Web Module을 체크해주고 Java, JavaScript도 없었다면 체크해준다. Java를 새로 추가했다면 다음 창이 나올텐데 Build Path를 설정해주는 부분으로,src/main/java를 입력해주면 된다. 그리고 Web Modul..
[날씨 기반 여행 플래너] RestTemplate으로 제네릭 클래스에 json 매핑하기 (feat. 제네릭의 타입 소거, 익명 클래스) 작년 11월, 멀티캠퍼스에서 백엔드 개발 교육 과정을 수료했다. 최종 프로젝트를 진행하면서 마주했던 문제들을 노션에 정리해놨는데,프로젝트 복기 겸..! 누군가에게 도움이 될까 싶어..! 글로 정리해보고자 한다. 프로젝트를 간단히 설명하자면, '날씨 기반 여행 플래너'로 날씨를 바탕으로 여행 계획을 수립할 수 있는 웹 서비스이다.Java, Spring boot, MyBatis, Oracle 등의 기술을 활용하였고,날씨와 여행 장소 데이터는 기상청과 한국관광공사의 Open API를 이용하였다.내가 맡은 역할 중 하나는 한국관공공사의 TourAPI를 이용하여 국내 여행 장소를 DB에 저장하는 일이었다. TourAPI에서는 지역기반관광정보, 소개정보, 이미지정보.. 여러 데이터를 제공해주는데,주소, 이름과 같은..
[날씨 기반 여행 플래너] 로깅 전략 작년 11월, 멀티캠퍼스에서 백엔드 개발 교육 과정을 수료했다. 최종 프로젝트를 진행하면서 마주했던 문제들을 노션에 정리해놨는데,프로젝트 복기 겸..! 누군가에게 도움이 될까 싶어..! 글로 정리해보고자 한다. 프로젝트를 간단히 설명하자면, '날씨 기반 여행 플래너'로 날씨를 바탕으로 여행 계획을 수립할 수 있는 웹 서비스이다.Java, Spring boot, MyBatis, Oracle 등의 기술을 활용하였고,날씨와 여행 장소 데이터는 기상청과 한국관광공사의 Open API를 이용하였다.   프로젝트 당시 세웠던 로깅 전략에 관해 얘기해보려고 한다 ! 로그에 대해 무지했던 나는 모든 패키지에 debug 레벨로 설정하여 사용했다.하지만, 이 설정은 모든 라이브러리, 프레임워크의 내부 동작을 콘솔에 출력해..
Git으로 협업하기 Git을 이용하지 않을 때 문제점 각자 작업하던 코드를 합쳐야 할 때 일일이 diff하고 복사, 붙여넣기 해야한다. 이때, 같은 코드를 다르게 수정했을 수도 있으며 자신과 관련 없는 코드도 살펴봐야 하는 등의 이유 때문에 코드 병합은 복잡하고 힘들어진다. Git을 이용한 코드 병합 Git은 독립적으로 개발할 수 있는 환경을 제공해주고 각자 개발한 작업들을 대신 합쳐준다. Branch Git의 Branch는 버전의 분기로, 원래 코드와는 상관없이 독립적으로 개발을 진행하게 해준다. Git의 기본 branch는 master, Github의 branch는 main Checkout 특정 브랜치에서 작업할 수 있도록 작업 환경을 바꾸는 행위다. (HEAD를 변경하는 작업이다.) 한 브랜치에서 작업을 하다가 커밋하..
Git 기초 Git Git은 버전을 관리해주는 소프트웨어 Version 버전이란 유의미한 변화(기능 추가 등)가 결과물로 나온 것이다. 변수명 수정 등의 작은 변화는 유의미하다고 할 수 없다. 버전 관리 1. 버전을 비교해줌으로써 변경 사항을 알 수 있다. 2. 이전 버전으로 되돌릴 수 있다. 3. 여러 명의 코드를 쉽게 나누고 합치며 개발할 수 있다. 4. 더 중요한 버전들을 분류할 수 있다. 5. 버전으로 등록하지 않은 파일들을 임시 보관할 수 있다. 6. ... 이러한 Git을 이용하면 저장소에 버전들을 기록해 필요할 때 참고하거나, 되돌릴 수 있어 개발 생산성이 높아질 것이다. 공간 Git에는 3개의 공간이 있다. 1. 작업 디렉토리(Working Directory) 2. 스테이지(Staging Area) 3..