반응형
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 |
댓글