본문 바로가기
스프링 (Spring)/DTO, Lombok, JPA, H2

JPA 개념, 기본설정

by 후닝훈 2021. 7. 13.
반응형

JPA란?

- JPA는, SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기.

 

1. JPA가 없다면, JAVA 코드에 SQL문을 삽입해야 한다.

String query = "Select * From Employee where ID = ?";
Employee employee = jdbcTemplate.queryForObject(
	query, new Object[] { id }, new EmployeeRowMapper());

또한, DB의 종류를 바꾼다면 (EX. MySQL -> H2), 문법에 대한 검사를 모두 시행해야함.

2. JPA를 사용한다면, 자바 코드를 사용하면 자동으로 SQL문으로 변경해준다.

 

Domain, Repository

Spring의 Domain = Table

Spring의 Repository = SQL

 

JPA 기본 설정

- 프로젝트 시작할 때 이미 JPA 를 설정하였기 때문에 따로 설정해줄 필요가 없다.

- 프로젝트 실행시 설정하지 않았다면 build.gradle에 아래의 코드를 추가해주자.

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

 

 

Domain, Repository 도입하기

1. src > main > java > com.sparta.week02에 domain 이라는 패키지를 만든다.

2. Course.java (class file), CourseRepository.java (interface) 파일 생성.

 

Course.java

@NoArgsConstructor // 기본생성자를 대신 생성
@Entity // SQL문의 테이블 역할을 함을 나타냄.
public class Course {

    @Id // ID 값, **Primary Key로 사용하겠다는 뜻.
    @GeneratedValue(strategy = GenerationType.AUTO) // 자동 증가. auto_increment
    private Long id;

    @Column(nullable = false) // 컬럼 값이고 반드시 값이 존재해야 함. Not NULL
    private String title;

    @Column(nullable = false)
    private String tutor;

 
	// id는 database에서 사용하는 값이기에 getter을 설정하지 않음.
    // setter은 repository에서 설정함.
    
    public String getTitle() {
        return this.title;
    }

    public String getTutor() {
        return this.tutor;
    }

    public Course(String title, String tutor) {
        this.title = title;
        this.tutor = tutor;
    }
}

 

CoureRepository.java

public interface CourseRepository extends JpaRepository<Course, Long> {
}

 

Interface

- 인터페이스는 클래스에서 멤버가 빠진, 메소드 모음집이라고 보면 된다.

- JPA는 Repository를 통해서만 사용할 수 있다.

반응형

'스프링 (Spring) > DTO, Lombok, JPA, H2' 카테고리의 다른 글

CRUD  (0) 2021.07.13
DB 에 생성일자와 수정일자 필드 만들기  (0) 2021.07.13
JPA 사용하기  (0) 2021.07.13
H2 Database 기본설정  (0) 2021.07.13
개념정리  (0) 2021.07.11

댓글