멀티모듈 DB 연결
목차
DB접근은 공통으로 사용될 것이므로 common모듈에서 진행한다.
1. common 모듈
1.1 의존성 추가
spring-data-jpa와 mysql 의존성을 추가해준다.
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.3'
id 'io.spring.dependency-management' version '1.1.7'
id 'java-library' # api키워드를 사용하기 위해 추가
}
...
dependencies {
...
implementation 'com.mysql:mysql-connector-j'
api 'org.springframework.boot:spring-boot-starter-data-jpa'
...
}
1.2 entity 및 repository 생성
Member
@Entity
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
MemberRepository
public interface MemberRepository extends JpaRepository<Member, Long> {}
2. api 모듈
2.1 DB접속 정보 설정
applicaton.yml
spring:
main:
allow-bean-definition-overriding: true
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQLDialect
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
show_sql: true
use_sql_comments: true
jdbc: Asia/Seoul
2.2 common모듈의 엔티티와 리포지토리 스캔 설정 추가
ApiApplication
@SpringBootApplication(scanBasePackages = {"kr.hyunbenny.api", "kr.hyunbenny.common"})
@EntityScan("kr.hyunbenny.common.domain")
@EnableJpaRepositories(basePackages = "kr.hyunbenny.common.repository")
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
2.3 테스트 api 추가
MemberController
@Slf4j
@RestController
@RequiredArgsConstructor
public class MemberController {
private final MemberService memberService;
@PostMapping("/member")
public ResponseEntity<ResponseDto> saveMember(@RequestParam String name) {
Long id = memberService.saveMember(name);
return new ResponseEntity<>(new ResponseDto(CodeEnum.SUCCESS, id), HttpStatus.OK);
}
}
MemberService
@Slf4j
@Service
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
public Long saveMember(String name) {
Member member = Member.builder().name(name).build();
Member savedMember = memberRepository.save(member);
return savedMember.getId();
}
}
테스트 api 작성 후, 테스트를 해보면 아래와 같이 정상적으로 값이 들어간 것을 확인할 수 있다.
