본문 바로가기

Study

[백엔드온라인TIL] JPA 학습 체크리스트(JPA vs Hibernate) (48일차) 이번 프로젝트에서 Spring boot + JPA + Gradle 을 적용하면서 헷갈렸던 부분, 알게 된 부분에 대해서 적기 위해 작성했습니다. JPA 강의를 듣고 적용하는 과정에서 Maven말고 Gradle로 프로젝트를 진행했는데, 다른 점이 있다보니 조금 헤맸습니다. 👀 의문점 발생. JPA 강의에서 persistence.xml을 작성하고 Entity Manager를 생성한다음 JPA 작성을 하는데, Gradle은 xml을 쓰지 않는 것을 장점으로 알고있다. (pom.xml대신 build.gradle를 작성한다) Gradle로 작성할 때 application.properties에 JPA 속성을 작성했기 때문에 persistence.xml을 작성하면 중복 작성이 된다. Gradle + JPA을 검색해보.. 더보기
[백엔드온라인TIL] JPA 학습 체크리스트 (47일차) 영속성(Persistence) 1. 데이터를 생성한 프로그램이 종료되더라도 사리지지 않는 데이터의 특성을 말한다. 2. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램이 종료되면 모두 잃어버리게 된다. 때문에 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구적으로 저장하여 영속성을 부여한다. 1. JDBC 와 Persistence Framework 의 차이점 SQL Mapper와 ORM Persistence Framework는 SQL Mapper 와 ORM으로 나뉜다. 1. ORM은 데이터베이스 객체를 자바 객체로 매핑함으로써 객체 간의 관계를 바탕으로 SQL을 자동으로 생성해주지만, SQL Mapper는 SQL을 명시해줘야 한다. 2. ORM은.. 더보기
[백엔드온라인TIL] java 학습 46일차 JPA를 사용하다 보면 바로 N+1의 문제에 마주치고 바로 Fetch Join을 접하게 됩니다. 처음 Fetch Join을 접했을 때 왜 일반 Join으로 해결하면 안되는지에 대해 명확히 정리가 안된 채로 Fetch Join을 사용했습니다. Join, Fetch Join 차이점 요약 일반 Join Fetch Join과 달리 연관 Entity에 Join을 걸어도 실제 쿼리에서 SELECT 하는 Entity는 오직 JPQL에서 조회하는 주체가 되는 Entity만 조회하여 영속화 조회의 주체가 되는 Entity만 SELECT 해서 영속화하기 때문에 데이터는 필요하지 않지만 연관 Entity가 검색조건에는 필요한 경우에 주로 사용됨 Fetch Join 조회의 주체가 되는 Entity 이외에 Fetch Join이.. 더보기
[백엔드스터디WIL]9주차 학습일지 - 학습한 내용 - @Transactional - @MappedSuperClass - queryDsl 개념 @Transactional 1. 트랜잭션의 성질 (ACID) 원자성 : 한 트랜잭션 내에서 실행한 작업들은 하나로 간주한다. 즉, 모두 성공 또는 모두 실패 일관성 : 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. 격리성 : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야한다. 지속성 : 트랜잭션을 성공적으로 마치면 결과가 항상 저장되어야 한다. 2. 스프링에서 트랜잭션 처리 방법 스프링에서 트랜잭션 처리를 지원하는데 그 중 어노테이션 방식으로 @Transactional을 선언하여 사용하는 방법이 일반적이며, 선언적 트랜잭션이라 부른다. 클래스, 메서드 위에 @Transact.. 더보기
[백엔드온라인TIL] java 학습 45일차 docker 터미널에서 컨테이너 생성 docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=rose -e POSTGRES_DB=messenger --name postgres_spr -d postgres Windows Subsystem for Linux의 동작 원리 가상머신을 사용하지 않고도, 윈도우에서 리눅스가 네이티브하게 동작한다니 신기하지 않나요? WSL은 윈도우의 가상화 기술을 Hyper-V 아키텍처를 기반으로 동작합니다. 하지만 이 구조는 윈도우 내부에 잘 감춰져있고 윈도우와 통합도 잘 되어있기 때문에, 가상 머신을 사용하는 느낌은 받을 수 없습니다. 가상머신 부팅이 몇 분 정도가 걸린다면, WSL 리눅스는 몇 초 정도면 바로 사용.. 더보기
[백엔드온라인TIL] java 학습 44일차 - 영속성 jpa 개념 복습 영속성 컨텍스트 JPA를 공부할 때 가장 중요한게 객체와 관계형 데이터베이스를 매핑하는 것(Object Relational Mapping) 과 영속성 컨텍스트를 이해하는 것 이다. 두가지 개념은 꼭 알고 JPA를 활용하자. 엔티티 매니저 팩토리와 엔티티 매니저 JPA는 스레드가 하나 생성될 때 마다(매 요청마다) EntityManagerFactory에서 EntityManager를 생성한다. EntityManager는 내부적으로 DB 커넥션 풀을 사용해서 DB에 붙는다. 영속성 컨텍스트 영속성 컨텍스트는 JPA를 이해하는데 가장 중요한 용어이다. "엔티티를 영구 저장하는 환경"이라는 뜻 EntityManager.persist(entity); 앞의 예제에서 persist()로 d.. 더보기
[백엔드온라인TIL] java 학습 43일차 위 이미지는 Spring 삼각형이라는 유명한 이미지로 Spring의 핵심 개념들을 모두 표현하고 있다. POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다. POJO란 Plain Old Java Object의 약자로, 이를 직역하면 순수한 오래된 자바 객체이다. 즉, Java로 생성하는 순수한 객체를 뜻한다. 이를 해석하면 POJO는 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고, 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 의미한다. 이러한 POJO에 애플리케이션의 핵심 로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 한다. POJO 프로그래밍 POJO 프로그래밍은 POJO를 이용하여 프로그래밍 코드를 작성하는 것이다. 그러.. 더보기
[백엔드온라인TIL] java 학습 42일차 jpa에서 영속성의 의미 Persistence 사전적 의미는 지속되다라는 의미가 있다. 엔티티 매니저의 persist() 메서드가 있다. save라고 해도될텐데 말이다. 이유는 정의하기 나름일 수도 있지만, 나는 간단하게 flush, commit 단계가 존재하고, 영속성 컨텍스트에 영속화 하는 것이기 때문에 persist()라고 네이밍 했을 것이라고 했다. save는 persist, flush, commit을 모두 포함하는 것이기 때문이다. 팀원 분의 생각은 조금 더 나아간 생각이었다. 1.1.1. 영속성 컨텍스트에서 영속이 뭔가요? 나는 영속성 컨텍스트에 객체를 영속 시킨다는 것이라고 했다. 객체를 관리하는 컨텍스트이다 라는 의미였다. 다음 질문이 있었다. 1.1.2. 영속이란 무엇인가요? 설명이 되지.. 더보기
[백엔드스터디WIL]8주차 학습일지 제이쿼리(jQuery)는 자바스크립트 라이브러리(Javascript library)로, Html 문서 조작, 이벤트 처리, 애니메이션 등 다양한 기능을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. 이번 포스팅에서는 jQuery의 기본 개념과 사용법을 코드 예제를 곁들여서 자세히 살펴보도록 하겠습니다. jQuery란? 기본 개념과 사용법, 코드 예제로 알아보기 jQuery의 라이브러리 로딩 jQuery 라이브러리를 사용하기 위해서는 먼저 jQuery 라이브러리 파일을 HTML 문서에 로딩해야 합니다. jQuery 라이브러리 파일은 jQuery 공식 웹사이트에서 다운로드하거나, CDN(Content Delivery Network)에서 제공하는 파일을 사용할 수 있습니다. HTML 예시 선택자(Selec.. 더보기
[백엔드온라인TIL] java 학습 41일차 1.1. Ajax의 동작 방식 브라우저에서 Ajax 요청을 담당하는 XMLHttpRequest라는 객체를 통해 서버에 정보를 요청, 응답받음 1.2. 콜백 동작 순서 성공 시 : success > complete > done > always 실패 시 : error > complete > fail > always 1.3. jQuery를 이용한 Ajax Ajax의 기본 Method를 이용하면 XMLHttpRequest를 직접 사용하게 되는데 때문에 이러한 복잡한 과정 없이 jQuery를 이용하면 간단하게 서버와 데이터를 주고받을 수 있음 또한 크로스 브라우징 문제도 jQuery가 알아서 해결해주고 여러 가지 편리한 기능들을 제공 1.4. $.ajax([settings]) 함수의 property https:/.. 더보기