jpa

    [JPA] Entity 매핑

    객체와 테이블 매핑 @Entity JPA가 관리하는 객체를 Entity라고 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 달아줘야 한다. 파라미터가 없는 public 또는 protected생성자를 필수로 구현해야 하며 final 클래스, enum, interface, inner클래스에 사용할 수 없다. 그리고 DB에 저장할 필드에도 final을 사용할 수 없다. name 속성 JPA에서 사용할 Entity의 이름을 지정한다. 기본값으로 클래스 이름을 그대로 사용한다. 같은 이름이 있는게 아니라면 가급적 기본값을 사용하도록 한다. @Table Entity와 매핑할 테이블을 지정한다. name 속성 매핑할 테이블 이름을 지정한다. 실제 쿼리도 name에 지정된 테이블로 ..

    [JPA] 개념 정리(영속화, 영속성 컨텍스트)

    여태 spring-boot-starter-data-jpa 가 JPA의 전부인 줄 알았지만 아니었다. Java에서 대표적인 ORM이 JPA이고(표준이 되었음) 그 구현체 Hibernate가 있는 것과 객체는 객체답게, RDB는 RDB답게 설계하면 ORM 프레임워크가 자동으로 매핑해주는 것, DB에 종속적이지 않은 것 등은 알고 있었다. 그래서 JPA가 뭔지 더 찾아보니 기존에 내가 사용하던 것들의 원리를 알 수 있었다. JPA의 원리 JPA 동작 JPA는 어플리케이션과 JDBC 사이에서 동작한다. 어플리케이션에서 JPA로 명령을 하면 JPA가 해석해서 JDBC API를 사용하여 SQL을 실행하고 그 결과를 반환받는다. 그래서 findAll()과 같은 자바스러운 메소드를 사용해도 변환해서 SELECT * ~..

    JPA 레포지터리, Member CRUD - 게시판 만들기(4)

    Repository Repository란? 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들(findAll, save 등)을 사용하기 위한 인터페이스이다. 데이터 처리를 위해 테이블에 어떤 값을 넣거나 조회하거나 업데이트하거나 삭제시키는 등의 CRUD(Create, Read, Update, Delete)가 필요하다. 이때 CRUD를 어떻게 처리할지 정의하는 계층이 Repository이다. CRUD 데이터 조회하기 api 모듈에 새로운 패키지인 repository를 만들고 MemberRepository 인터페이스를 생성한다. repository/MemberRepository package com.seungh1024.repository; import com.seungh1024.entity.Memb..

    JPA와 ORM

    ORM ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술이다. RDB 테이블은 객체지향적 특징이 없고 자바와 같은 언어로 접근하기 쉽지 않기 때문에 ORM을 사용해 오브젝트와 RDB사이에 존재하는 개념과 접근을 객체지향적으로 다루기 위한 기술임 즉 ORM은 객체 관계를 매핑해주는 것이고 객체는 객체대로, RDB는 RDB대로 설계하여 ORM 프레임워크가 중간에서 매핑해주는 것이다. 대중적인 언어에는 대부분 ORM 기술이 존재(Ex. node의 sequelize) ORM 은 객체와 RDB 두 기둥 위에 있는 기술이다 MyBatis, iBatis는 ORM이 아님. SQL Mapper임 ORM은 객체를 매핑하는 것이고 SQL Mapper는 쿼리를 매핑하..