
JPA로 DB 연동을 해보겠습니당
1.DB 설치
먼저 연동할 DB를 local에 설치해줍니당
저는 mysql을 사용할건데 docker로 컨테이너를 띄어서 사용하도록 할게용ㅎㅎ(local에 mariadb가 이미 깔려있어서 충돌날까봐ㅠ)
먼저, docker를 설치해줍니다!
https://www.docker.com/products/docker-desktop/
설치가 끝난 후에 터미널에 docker -v 을 입력해주십시요
docker -v
Docker version 26.1.4, build 5650f9b
잘 설치되었습니다
그 다음 mysql 이미지를 다운받아볼게요
docker pull mysql
이제 컨테이너를 띄어보겠습니다(생성/실행)
docker run --name <container_name> -e MYSQL_ROOT_PASSWORD=<password> -d -p <호스트 포트> <컨테이너 포트> mysql:latest
mysql에 접속해볼까용
suyeon > docker exec -it mysql-container2 bash
bash-5.1# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 890
Server version: 8.4.0 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
잘 접속됩니다
2.DB 연동
프로젝트에 DB를 JPA로 연동해보겠습니다
[build.gradle]
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.32'
}
[application.yml]
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:<port>/<database>
username: root
password: {password}
jpa:
show-sql: true
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
3.코드 작성
[JpaController]
@Log4j2
@RestController
@RequestMapping("/api/jpatest")
public class JpaController {
@Autowired
private JpaService jpaService;
//insert 요청
@PostMapping("/submit")
public ResponseEntity<JpaEntity> jpaInsert(@RequestBody JpaRequest jpaRequest) {
log.info("testRequest"+jpaRequest.getText());
JpaEntity jpaTest = jpaService.saveJpaTest(jpaRequest.getText());
return new ResponseEntity<>(jpaTest, HttpStatus.CREATED);
}
//list 조회
@GetMapping("/list")
public ResponseEntity<List<JpaEntity>> jpaSelect() {
log.info("jpaSelect");
List<JpaEntity> jpaTest = jpaService.getAllJpaTests();
return ResponseEntity.ok().body(jpaTest);
}
}
[JpaRequest]
@Data
public class JpaRequest {
private String text;
}
[JpaEntity]
@Builder
@ToString
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Entity(name="text")
public class JpaEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String text;
}
[JpaTestRepository]
@Repository
public interface JpaTestRepository extends JpaRepository<JpaEntity,Long> {
}
[JpaService]
@Service
public class JpaService {
@Autowired
private JpaTestRepository jpaTestRepository;
@Transactional
public JpaEntity saveJpaTest(String text2) {
JpaEntity testEntity = JpaEntity.builder()
.text(text2) // text 필드에 text2 값 insert
.build();
return jpaTestRepository.save(testEntity);
}
@Transactional(readOnly = true)
public List<JpaEntity> getAllJpaTests() {
return jpaTestRepository.findAll();
}
@Transactional(readOnly = true)
public Optional<JpaEntity> getJpaTestById(Long id) {
return jpaTestRepository.findById(id);
}
}
4.결과

요로코롬 텍스트를 입력 후 [제출] 버튼을 눌롸주면 데이터가 insert 되구욥

데이터가 잘 들어갔는지! [조회] 버튼 클릭해서 DB List를 조회해주면 확인할 수 있슴닷~!