빈쿵바라기
좌충우돌 개발자의 기록
빈쿵바라기
전체 방문자
오늘
어제
  • 분류 전체보기 (53)
    • Programming (25)
      • JAVA (12)
      • Spring Boot (6)
      • JPA (7)
      • Python (0)
    • Database (12)
      • RDBMS (4)
      • NoSQL (7)
    • Server (11)
    • Elasticsearch (3)
    • ETC (2)

블로그 메뉴

    공지사항

    인기 글

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    빈쿵바라기

    좌충우돌 개발자의 기록

    [Spring Data JPA] JPA란? JPA기본 예제
    Programming/JPA

    [Spring Data JPA] JPA란? JPA기본 예제

    2022. 7. 25. 00:09

    JPA란?
    • JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준
    • JPA가 제공하는 API를 사용하며, 개발자가 SQL를 작성하지 않아도 된다.
    • JPA가 개발자 대신 적절한 SQL를 생성해준다. (JPQL)
    • 객체(Entity)를 관계형 DB와 자동으로 Mapping 해준다. (ORN)

     

    ORM
    • Object-Relational Mapping의 줄임말.
    • 객체와 관계형 DB를 매핑한다는 뜻.
    • ORM 프레임워크를 사용하면 객체와 DB와의 매핑을 통해 적절한 SQL를 생성하여 DB에 객체를 저장해준다.

     

    의존성 추가

    maven repository 주소 : https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>2.7.2</version>
    </dependency>

     

    Entity

    JPA에서 Entity라는 것은 데이터베이스에 저장하기 위해서 유저가 정의한 클래스입니다. 테이블과 Mapping이 되는 구조를 가집니다.

    @Entity
    @Table(name="member")
    @Getter @Setter
    public class Member {
    	
    	@Id
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	private long id;
    	
    	@Column
    	private String name;
    	
    	@Column
    	private int age;
    	
    	public Member() {}
    }

    Entity에는 여러가지 어노테이션을 통해 데이터베이스와 Mapping 설정등을 추가할 수 있습니다. 자세한 설명은 다음 글에서 포스팅하겠습니다.

     

    Table To Entity
    • 이클립스에서 프로젝트 > 마우스 우클릭

    JPA Tools > Generate Entities from Tables...

     

    만들고자 하는 DB의 Connection을 연결하여 원하는 테이블을 클릭하여 간편히 Entity를 만들 수 있습니다.

     

    Repository

    Entity 클래스를 구성했다면 쿼리를 실행하기 위해서 Repository 인터페이스를 만들어야 합니다.

    public interface MemberRepository extends JpaRepository<Member, Integer> {
    }

    JpaRepository를 상속받은 Interface를 구현하면 기본적인 쿼리들은 바로 사용할 수 있습니다.

     

    Application 작성
    @SpringBootTest
    public class JpaTest {
    	
    	@Autowired private MemberRepository memberRepository;
    	
    	@Test
    	public void test() {
    		
                // 전체 조회
            	memberRepository.findAll();
    
                // id로 조회
                memberRepository.findById(1);
    
                // 저장
                Member member = new Member();
                member.setName("개발자");
                member.setAge(20);
                memberRepository.save(member);
    	}
    
    }

    만들었던 MemberRepository를 주입받고, findAll()등과 같은 메소드를 통해 간단한 쿼리를 바로 호출하여 사용할 수 있습니다. MemberRepository를 구현할 때 상속 받은 JpaRepository를 보게 되면, 우리가 호출할 수 있는 메소드들을 볼 수 있습니다.

    저작자표시 (새창열림)

    'Programming > JPA' 카테고리의 다른 글

    [Spring Data JPA] Query를 사용하는 여러가지 방법  (0) 2022.08.11
    [Spring Data JPA] FetchType - 즉시 로딩(EAGER)과 지연 로딩(LAZY)  (0) 2022.08.04
    [Spring Data JPA] 양방향 순환참조 문제 및 해결방법  (0) 2022.08.03
    [Spring Data JPA] JPA 연관관계 매핑(JOIN)  (0) 2022.08.02
    [Spring Data JPA] JPA 주요 어노테이션(Annotation)  (0) 2022.07.31
      'Programming/JPA' 카테고리의 다른 글
      • [Spring Data JPA] FetchType - 즉시 로딩(EAGER)과 지연 로딩(LAZY)
      • [Spring Data JPA] 양방향 순환참조 문제 및 해결방법
      • [Spring Data JPA] JPA 연관관계 매핑(JOIN)
      • [Spring Data JPA] JPA 주요 어노테이션(Annotation)
      빈쿵바라기
      빈쿵바라기
      삽질하는 개발자의 좌충우돌 개발기

      티스토리툴바