JPA란?
JPA( Java Persistence API)는 자바 ORM(Object-Relational Mapping) 대한 표준 명세(인터페이스 모음)이며 객체와 데이터베이스 간의 매핑을 관리하고, 쿼리문의 작성 없이 데이터베이스 작업을 수행할 수 있게 해 준다.
이를 통해 CRUD 작업을 더욱 쉽게 할 수 있도록 지원해 주고, 코드의 변경이나 유지보수도 용이해진다.
JPA 연결
spring.datasource.url: jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username: root
spring.datasource.password: password
spring.jpa.database: mysql // 데이터베이스
spring.jpa.database-platform: org.hibernate.dialect.MySQL5InnoDBDialect // 구현체
spring.jpa.generate-ddl: true // 스프링 실행시 entity로 구성된 테이블 생성
spring.jpa.show-sql: true //JPA가 생성한 쿼리문 보기
spring.jpa.hibernate.ddl-auto: update // 변경된 스키마 적용
데이터베이스마다 약간의 코드의 변경이 필요하다.
- Entity 클래스
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String name;
- Repository interface
public interface UserRepository extends JpaRepository<User, Long> {
// 아무것도 없어 보이지만 기본 CRUD 메소드가 자동으로 제공
}
subject 키워드
메서드명 앞부분의 키워드로 어떤 작업을 수행할지 결정된다.
1. 생성
save(s entity) : 주어진 entity가 새로운 데이터일 경우 생성되고, 이미 존재할 경우 업데이트된다.
2. 조회
findBy : 조회하는 대상이 1개 데이터라면 단일 객체로 리턴
findAllBy : List <User>와 같이 Collection 타입으로 리턴
3. 삭제
deleteBy : void 타입 혹은 int/long 등으로 삭제된 데이터 수 리턴
4. 카운트, 존재여부확인
existBy : boolean 타입으로 리턴
countBy : int/long 등으로 해당되는 데이터 수 리턴
'개발일지' 카테고리의 다른 글
개발일지 23 - @PathVariable, @RequestBody (0) | 2023.11.16 |
---|---|
개발일지 22 - 현재까지 자주 사용하고 있는 어노테이션 (0) | 2023.11.15 |
개발일지 20 - Spring Bean (0) | 2023.11.13 |
개발일지 19 - SOLID 원칙 (0) | 2023.11.13 |
개발일지 18 - 3계층 아키텍쳐 (0) | 2023.11.09 |