1. 로컬 환경에 PostgreSQL 설치
2. Spring Boot, JPA, PostgreSql
a. 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'org.postgresql:postgresql'
Spring Data JPA, PostgreSQL Driver 추가
b. application.yml
spring:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/test
username: user
password: password
jpa:
hibernate:
ddl-auto: update
show-sql: true
database: postgresql
PostgreSQL과 연결 설정을 위한 Datasource 설정과 JPA 설정이다.
c. Person
@Entity
@Getter
@NoArgsConstructor
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Setter @Nullable private String name;
@Setter @Nullable private int age;
@Builder
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
- db table과 매팽되는 Entit 클래스를 정의했다.
DDL 문
JPA DDL-AUTO를 지정해줘서 자동으로 DDL을 생성한다.
CREATE TABLE public.person (
id bigserial NOT NULL,
age int4 NOT NULL,
"name" varchar(255) NULL,
CONSTRAINT person_pkey PRIMARY KEY (id)
);
d. PersonRepository
public interface PersonRepository extends JpaRepository<Person, Long>{
}
JpaRepository를 extends 한 PersonRepository이다. 다양한 쿼리 메서드를 지원한다.
자세한 내용은 아래의 내용을 참고하면 된다.
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.namespace-reference
e. PersonService
@Service
@RequiredArgsConstructor
public class PersonService {
private final PersonRepository personRepository;
public void create(Person person) {
personRepository.save(person);
}
public Optional<Person> read(Long id) {
return personRepository.findById(id);
}
public void update(Person person) {
create(person);
}
public void delete(Long id) {
personRepository.deleteById(id);
}
public List<Person> readAll() {
return personRepository.findAll();
}
}
f. PersonController
@RestController
@RequiredArgsConstructor
public class PersonController {
private final PersonService personService;
@PostMapping("/create")
public void creat(@RequestBody Person person) {
personService.create(person);
}
@GetMapping("/read")
public Optional<Person> read(Long id) {
return personService.read(id);
}
@PutMapping("/update")
public void update(@RequestBody Person person) {
personService.update(person);
}
@DeleteMapping("/delete")
public void delete(Long id) {
personService.delete(id);
}
@GetMapping("/read_all")
public List<Person> readAll() {
return personService.readAll();
}
}
엔드포인트로 테스트 하기 위한 용도의 cotroller이다.
간단하게 Spring Data JPA를 활용하여 PostgreSQL 데이터베이스와 접근하고 데이터 CRUD를 해봤다.
'Programming > Spring' 카테고리의 다른 글
[Spring Boot] Spring Boot + ES 예제 (0) | 2023.09.28 |
---|---|
[Spring Boot] Spring Boot + Kafka 예제 (0) | 2023.09.26 |
[Spring Boot] Spring Boot + Redis CRUD 예제 (0) | 2023.09.24 |
[Spring Boot] Spring Integration MQTT 예제 (0) | 2023.09.24 |
[Spring] Bean 생명주기 콜백 (0) | 2023.09.16 |