
데이터 접근 계층
비즈니스 로직에서 데이터베이스에 접근하여 데이터베이스 작업을 담당하고, 결과를 Service 계층에 반환한다.
기본 CRUD 연산
페이징 및 정렬
JPA 관련 추가 기능
public interface SampleTable1Repository extends JpaRepository<T,ID>{
JpaRepository<T,ID>
<T,ID>
JpaRepository의 제네릭 타입
@Repository‼️ interface에 @Repository를 적용한 이유
경로: base > Repository > SampleTable1Repository.java
@Repository
public interface SampleTable1Repository
extends JpaRepository<SampleTable1Entity, String>{
}
경로: base > entity > SampleTable1Entity.java
Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity(name="sample_table_1")
@Table(name="sample_table_1")
public class SampleTable1Entity {
@Id
@Column(name="sample_id", nullable=false, unique=true, updatable=false, length=10)
private String sampleId;
@Column(name="sample_column", nullable=false)
private Integer sampleColumn;
}
경로: base > dto > PostSample1RequestDto.java
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class PostSample1RequestDto {
//유효성 검사
@NotBlank
@Length(max=10)
private String SampleId;
@NotNull
private Integer sampleColumn;
}
경로: base > controller > SampleController.java
POST http://127.0.0.1:4000/sample
->성공(201) 반환 / 실패(500) 반환
@RestController
@RequestMapping("/sample")
@RequiredArgsConstructor
public class SampleController {
private final SampleService sampleService;
@PostMapping("")
public ResponseEntity<String> postSample1 (
@RequestBody @Valid PostSample1RequestDto requestBody
) {
ResponseEntity<String> response = sampleService.postSample1(requestBody);
return response;
}
@DeleteMapping("/{sampleId}")
public ResponseEntity<String> deleteSample1 (
@PathVariable("sampleId") String sampleId
) {
ResponseEntity<String> response = sampleService.deleteSample1(sampleId);
return response;
}
@GetMapping("")
public ResponseEntity<String> queryMethod() {
ResponseEntity<String> response = sampleService.queryString();
return response;
}
경로: base > service > SampleService.java
public interface SampleService {
ResponseEntity<String> postSample1(PostSample1RequestDto dto);
ResponseEntity<String> deleteSample1(String sampleId);
}
SampleTable1Entity existEntity = sampleTable1Repository.findById(sampleId).get();
boolean isExisted = sampleTable1Repository.existsById(sampleId);
if(isExisted) return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("이미 존재하는 기본키 입니다.");
String sampleId = dto.getSampleId();
Integer sampleColumn = dto.getSampleColumn();
SampleTable1Entity entity = new SampleTable1Entity(sampleId, sampleColumn);
save() 메서드: 저장
sampleTable1Repository.save(entity);
sampleTable1Repository.deleteById(sampleId);
SampleTable1Entity entity = sampleTable1Repository.findById(sampleId).get();
sampleTable1Repository.delete(entity);
경로: base > service > implement > SampleServiceImplement.java
@Service
@RequiredArgsConstructor
public class SampleServiceImplement implements SampleService{
private final SampleTable1Repository sampleTable1Repository;
@Override
public ResponseEntity<String> postSample1(PostSample1RequestDto dto) {
String sampleId = dto.getSampleId();
Integer sampleColumn = dto.getSampleColumn();
// SampleTable1Entity existEntity = sampleTable1Repository.findById(sampleId).get();
boolean isExisted = sampleTable1Repository.existsById(sampleId);
if(isExisted) return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("이미 존재하는 기본키 입니다.");
SampleTable1Entity entity = new SampleTable1Entity(sampleId, sampleColumn);
sampleTable1Repository.save(entity);
return ResponseEntity.status(HttpStatus.CREATED).body("성공");
}
@Override
public ResponseEntity<String> deleteSample1(String sampleId) {
sampleTable1Repository.deleteById(sampleId);
SampleTable1Entity entity = sampleTable1Repository.findById(sampleId).get();
sampleTable1Repository.delete(entity);
return ResponseEntity.status(HttpStatus.OK).body("성공");
}
}