[2주차] JPA 시작하기

송수용·2022년 3월 23일
0

웹 개발의 봄, Spring

목록 보기
9/25

JPA 시작하기

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

만약 JPA가 없다면?!

String query = "SELECT * FROM EMPLOYEE WHERE ID = ?";
Employee employee = jdbcTemplate.queryForObject(
query, new Object[] {id},new EmployeeRowMapper());

java를 짜다가 SQL을 짜고 코드가 복잡해진다.

JPA가 있다면?

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

설정은 한 줄이면 끝난다.

repository.save(new Customer("Jack","Bauer"));
repository.save(new Customer("joman","ueikhan"));

이렇게 사용할 수 있다.
그렇다면 뒤에 SQL 번역은 JPA가 도와준다.

Domain과 Repository

"테이블"은 Domain, "SQL"은 Repository이다.

Domain, Repository 도입하기

courses 라는 테이블에 title, tutor 라는 컬럼을 만들었다.
예제로 이해해보자!

  • Course.java 클래스
@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.
@Entity // 테이블임을 나타냅니다.
public class Course {

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

    @Column(nullable = false) // 컬럼 값이고 반드시 값이 존재해야 함을 나타냅니다.
    private String title;

    @Column(nullable = false)
    private String tutor;

    public String getTitle() {
        return this.title;
    }

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

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

Interface 란?
JPA는 Repository를 통해서만 사용할 수 있다.
인터페이스는 클래스에서 멤버가 빠진, 메소드 모음집을 말한다.

public interface CourseRepository extends JpaRepository<Course, Long> {
}
profile
#공부중 #협업 #소통중시 #백엔드개발자 #능동적 #워커홀릭 #스파르타코딩 #항해99 #미니튜터 #Nudge #ENTJ #브레인스토밍 #아이디어뱅크

0개의 댓글