이 영역을 누르면 첫 페이지로 이동
개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

페이지 맨 위로 올라가기

개발다이어리

저만의 개발일지를 만들어가는 공간입니다.

JPA

  • 개발다이어리
QueryDSL 사용이유와 사용방법

QueryDSL 사용이유와 사용방법

2022.06.22
들어가기에 앞서 실무에서 사용하다보면 복잡한쿼리도 많아지고 동적쿼리도 피치못하게 사용해야하는 경우가 생기기 마련이다. JPQL로도 충분히 문제를 해결할 수는 있지만 복잡하고 손이 많이 갈 수 밖에 없는 형태가 되버린다. JPQL의 한계를 극복할 수 있는 대안 중 하나가 바로 QueryDSL이다. 단순히 쿼리를 작성하는 것이 아니라 쿼리를 자바코드로서 작성할 수 있게 해줌으로서 많은 것들을 극복하고 훨씬 더 편리하게 사용할 수 있게 되었다. 각자가 사용하는 환경에 따라서 설정방법이 달라질 수 있겠다. 필자가 사용하는 환경은 SpringBoot, Spring Data Jpa, gradle을 사용했다. QueryDSL을 사용하는 이유 QueryDSL을 사용하면 쿼리를 자바코드로 작성할 수 있게 된다. 처음 이..
연관관계 매핑(단방향)

연관관계 매핑(단방향)

2022.04.09
객체와 RDB는 분명 다른방향으로 동작하게 되있다. 서로 다른 패러다임을 가지고있는 객체와 RDB를 같게 만드는 것은 아무리 ORM을 사용한다고 하더라도 머리로 이해하는 것이 쉽지 않을 것이다. JPA를 이용하여 객체와 RDB를 연결하기 위해서 몇 가지 용어를 이해해야한다. 방향 : 단방향, 양방향 다중성 : 다대일(N:1), 일다대(1:N), 일대일(1:1), 다대다(N:M) 연관관계의 주인 : 객체 양방향 연관관계는 관리주인이 필요 이러한 용어들을 가지고 연관관계 매핑에 대한 이해를 시작해보자. Member와 Team을 매핑한다고 생각해보자 @Entity class Member { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = ..
[JPA] 영속성 컨텍스트

[JPA] 영속성 컨텍스트

2022.02.01
JPA를 사용하기 위해서는 영속성 컨텍스트라는 것을 정확하게 이해 할 필요가 있다. 객체지향과 RDB와의 패러다임을 없애주는 요소이기도 하며 JPA의 내부가 어떻게 동작하는지 이해할 수 있는 방향이기도 하다. 먼저, 우리가 JPA에서 데이터를 저장할 때 사용하는 persist()는 정확하게는 데이터를 저장시키는 메소드가 아니다. public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("testUnit"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = e..
[JPA] EntityManager

[JPA] EntityManager

2022.02.01
JPA는 기본적으로 persistence라는 클래스를 기반으로 동작한다. persistence-unit에 데이터베이스 연결이나 쿼리 로그 등의 설정들을 만들고 이 내용을 기반으로 EntityManagerFactory를 생성해서 사용하는 것이다. Persistence 간단하게 persistence.xml을 만들어보자 persistence-unit은 하나의 DB당 하나씩 생성해서 사용하면 된다. 위의 persistence-unit name="testUnit" 를 보면 여기서 설정한 persistence-unit의 이름이 "testUnit"이라는 것을 알 수 있다. 그리고 필요한 설정들을 해주면 되는데, 여기서는 h2데이터베이스를 사용하기 위한 설정 쿼리로그, sql로그 포맷 여부 등의 설정 들을 작성하였다...
[JPA] 프로젝트 생성

[JPA] 프로젝트 생성

2022.01.31
기본적인 환경은 IntelliJ Maven H2 를 사용하여 진행하도록 하겠다. 보통 프로젝트를 진행하게 되면 Spring Framework와 같이 사용하기 때문에 대부분의 필요한 작업들은 Spring이 자동으로 해준다. 하지만 이 포스팅에서는 JPA에서 어떤 동작들이 이루어지는지 자세하게 알기 위해서 순수 JPA만 동작하는 프로젝트를 만들어서 진행해보도록 하겠다. 우선 Maven기반의 프로젝트를 새로 생성한다. maven은 라이브러리를 관리해주는 도구이다. 이전에는 라이브러리를 직접 다운로드 받아서 사용했지만 maven을 사용한다면 라이브러리를 간단하게 가져올 수 있고 관련된 필요한것들을 자동으로 가져오고 관리해주기 때문에 편리하게 사용할 수 있다. 최근에는 gradle을 많이 사용하기도 해서 grad..
[JPA] JPA 알아보기

[JPA] JPA 알아보기

2022.01.31
들어가기에 앞서 우리가 개발을 하다보면 의아한점들을 느낄 수 있다. 언어도 객체지향이고 코드도 객체지향적으로 짜는데 DB와 매핑할려고보면 객체지향적인 코드가 나오지 않게된다. 이것은 우리가 사용하는 RDB와 객체지향과의 패러다임의 불일치에서 나오는 문제일 것이다. 일반적으로 RDB를 많이 사용하고있는데, RDB는 SQL로만 동작하는 시스템으로 객체라는 개념이 없다. 하지만 우리는 코드를 작성할 때 객체지향적으로 작성하고 이 코드로 가져오는 데이터들을 저장하기 위해서 RDB를 사용한다. 그래서 결국 DB에 맞게 코드를 다시 바꾸게 되는 것이다. 이런 방식으로 개발을 하다보면 어느샌가 SQL중심의 코딩을 하고있는 자신을 볼 수 있다. 똑같은 쿼리를 몇번이나 반복해서 작성하고 테이블에서 하나의 컬럼이 변경되면..
  • 최신
    • 1
  • 다음

정보

개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

  • 개발다이어리의 첫 페이지로 이동

검색

메뉴

  • 홈
  • Github
  • 방명록

나의 외부 링크

카테고리

  • 분류 전체보기 (66)
    • Spring (19)
      • MVC (7)
      • Boot (3)
      • Core (8)
      • Security (1)
    • Java (1)
    • 네트워크 (7)
    • JPA (6)
    • IntelliJ (2)
    • Database (1)
      • h2 (1)
      • postgreSQL (0)
    • 토이 프로젝트 (5)
      • 여행일지작성 (5)
    • 에러모음 (7)
    • 테스트코드 (2)
    • Git (8)
    • Nginx (2)
    • AWS (1)
    • 책 리뷰 (1)
    • Kotlin (2)
    • 회고 (1)
      • 24년도 회고 (1)
    • API문서 (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • HTTP
  • http 헤더
  • JPA
  • HTTP상태코드
  • 단방향 매핑
  • 네트워크 #TCP #IP #인터넷 통신
  • 테스트코드 실행안됨
  • 연관관계 매핑

정보

ssung의 개발다이어리

개발다이어리

ssung

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © ssung. Designed by Fraccino.

티스토리툴바