SpringBoot 프로젝트에 MariaDB를 사용하려면 일단은 데이터베이스를 생성해야 한다.
1. 데이터베이스 생성
MariaDB를 설치하면 같이 깔리는 HeidiSQL을 켜보자.
세션이 없으면 새로 생성하면 되고, 이미 있다면 MariaDB 설치시 등록했던 암호를 입력한다.
우클릭 > 새로 생성 > 데이터베이스을 통해 새로운 데이터베이스를 생성한다.
나는 test라는 이름의 데이터베이스를 생성할 것이다.
2. Springboot 프로젝트 생성
나는 프로젝트를 생성할 때, dependencies에 MariaDB Driver를 추가했다. 아니면, 따로 build.gradle에 dependencies를 추가해주어도 된다.
프로젝트는 start.spring.io 에서 생성했다.
3. application.yml 또는 application.properties 설정
나는 application.yml로 변경했다.
properties를 사용해도 크게 다를 것 없다.
properties에서는 spring.datasource.url=jdbc:mariadb://localhost:3306/{DB명} 과 같은 형태로 쓰면 된다.
spring:
datasource:
url: jdbc:mariadb://localhost:3306/{생성한DB명}
username: root
password: {비밀번호}
driver-class-name: org.mariadb.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
# show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
4. mariaDB 테스트
간단하게 Member엔티티를 만들어 mariaDB 연동을 테스트 해보았다.
Member.java
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Member {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String gender;
private int age;
@Builder
public Member(Long id, String name, String gender, int age) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
}
MemberRequestDto.java
@Getter @Setter
@NoArgsConstructor
public class MemberRequestDto {
private Long id;
private String name;
private String gender;
private int age;
public Member toEntity() {
return Member.builder()
.name(name)
.gender(gender)
.age(age)
.build();
}
}
MemberResponseDto.java
@Getter
public class MemberResponseDto {
private Long id;
private String name;
private String gender;
private int age;
public MemberResponseDto(Member member) {
this.id = member.getId();
this.name = member.getName();
this.gender = member.getGender();
this.age = member.getAge();
}
@Override
public String toString() {
return "MemberResponseDto{" +
"id=" + id +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
'}';
}
}
MemberRepository.java
public interface MemberRepository extends JpaRepository<Member, Long> {
}
MemberService.java
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
@Transactional
public Long save(MemberRequestDto memberSaveDto) {
return memberRepository.save(memberSaveDto.toEntity()).getId();
}
public List<MemberResponseDto> findAll() {
return memberRepository.findAll().stream().map(MemberResponseDto::new).collect(Collectors.toList());
}
@Transactional
public void deleteById(Long id) {
memberRepository.deleteById(id);
}
}
MyApplication.java
@EnableJpaAuditing
@SpringBootApplication
public class MyclosetApplication {
public static void main(String[] args) {
SpringApplication.run(MyclosetApplication.class, args);
}
}
MyApplicationTests.java
@SpringBootTest
//@Transactional //실제 DB에 찍히는 것을 보기 위해 주석
class MyclosetApplicationTests {
@Autowired
private MemberService memberService;
@Test
void save() {
MemberRequestDto memberRequestDto = new MemberRequestDto();
memberRequestDto.setName("김나라");
memberRequestDto.setGender("여");
memberRequestDto.setAge(24);
Long saveId = memberService.save(memberRequestDto);
}
}
위 테스트를 실행했을 때, mariaDB를 확인해보자.
테이블에 데이터가 잘 들어간 것을 확인할 수 있다.
728x90