앞에선 DB와 매칭되는 클래스인 엔티티를 정리 하였다. 엔티티로 매핑해 놓으면 해당 테이블과 연결된 항목들을 쉽게 가져올 수 있고, 설정할 수 있다. 그러나 프로그램 상에서만 그러할 뿐 실제 DB에 반영하기 위해선 Repository를 이용해야 한다.
- 구현
- interface 형식으로 구현을 한다.
- 엔티티가 아래와 같다면,
package com.example.test1.test1;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
public class entity1 {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long idx;
@Column(length=200)
String name;
@Column(length=11)
String phoneNumber;
@Column(columnDefinition = "TEXT")
String address;
}
- Repository Interface는 아래와 같다
package com.example.test1.test1;
import org.springframework.data.jpa.repository.JpaRepository;
public interface repo extends JpaRepository<entity1, Long>{
}
- JpaRepository를 상속받고, 형식으로는 엔티티클래스명, 엔티티에서 unique key값인 변수의 형을 적어둔다
- 여기선 JpaRepository<entitiy1, Long>이 된다.
- 이후 findby 함수의 확장형을 인터페이스에 작성해주면 자동으로 구현부 까지 실현되어 사용할 수 있다.
- CRUD 연동 함수들
- 저장 : 구현한 interface 의 내장 save 함수를 통해 DB에 저장 할 수 있다.
- Create, Update 동작이다.
- 삭제 : 구현한 interface 의 내장 delete 함수를 통해 DB에서 삭제 할 수 있다.
- 조회 : 구현한 interface 의 내장 findby 함수들을 통해 DB에 저장 할 수 있다
- findby 는 개발자가 필요에 따라 확장한다.
- 아래는 리파지토리를 사용하는 Java예제이다.
- 저장 : 구현한 interface 의 내장 save 함수를 통해 DB에 저장 할 수 있다.
package com.example.test1.test1;
public class repotest {
private final repo _repoInt;
//생성자에 의존성 주입. @Autowired 가 생략됨
public repotest(repo _repo)
{
this._repoInt = _repo;
}
public void CreateFunc()
{
entity1 ent1 = new entity1();
ent1.setAddress("");
_repoInt.save(ent1);
}
public void SaveFunc(entity1 ent1)
{
ent1.setAddress("변경");
_repoInt.save(ent1);
}
public void DeleteFunc(entity1 ent1)
{
_repoInt.delete(ent1);
}
}
- FindBy
- interface를 통해 값을 DB로부터 조회하는 함수.
- findbyId
- 기본으로 제공되는 함수로, interface 작성시 입력한 key 컬럼값을 기준으로 조회
- 리턴값은 Optional로, 형변환을 해야한다.
- findby + 컬럼명을 통해 다양한 함수들을 개발자가 등록할 수 있다.
- And, Or같은 연산자를 통해 컬럼들을 묶어 조회할 수 있다.
- 연산자
- And
- Or
- Between
- LessThan
- GreaterThanEqual
- Like
- In
- OrderBy
- 연산자
- And, Or같은 연산자를 통해 컬럼들을 묶어 조회할 수 있다.
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
public interface repo extends JpaRepository<entity1, Long>{
List<entity1> findByAddress(String address);
List<entity1> findByName(String name);
List<entity1> findByNameLike(String name);
List<entity1> findByPhoneNumber(String phoneNumber);
List<entity1> findByNameAndPhoneNumber(String name, String phoneNumber);
}
'Backend > SpringBoot' 카테고리의 다른 글
응답으로 템플릿 리턴하기 (model, 타임리프, layout) (0) | 2024.10.23 |
---|---|
의존성 주입 (0) | 2024.10.23 |
[기본구조2] JPA 초기 설정 (DB 관리) 및 Entity 예제(validation 포함) (0) | 2024.10.22 |
프로젝트 설정파일 application.properties (또는 application.yml) (0) | 2024.10.22 |
[VSCode] 코틀린 + 자바 섞어서 쓰기 (0) | 2024.10.21 |