Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 안드로이드
  • kotlin
  • elasticsearch
  • 레포지토리
  • 다이나믹 프로그래밍
  • 코틀린 인 액션
  • 프리코스
  • 우아한테크코스
  • til
  • 프로그래머스
  • 코딩테스트
  • 코틀린
  • rsocket
  • Docker
  • 백준
  • java
  • grafana
  • SQL
  • kibana
  • ec2
  • 내림차순
  • 에라토스테네스의 체
  • enum
  • Wil
  • MariaDB
  • 파이썬
  • Android
  • webflux
  • 문자열
  • spring

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

Spring

[Spring] SpringBoot 프로젝트에서 MariaDB 사용하기, 간단한 테스트

2023. 4. 4. 01:26

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

'Spring' 카테고리의 다른 글

[Spring] AWS RDS MariaDB + Spring Boot, Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '=' 해결  (0) 2023.05.08
[Spring] @Valid 메시지 message properties 사용하기, 한글 깨짐 해결  (0) 2023.04.27
[Spring] @Valid @ControllerAdvice와 @ExceptionHandler 사용한 전역 예외 처리  (0) 2023.04.25
[Spring] @Valid를 사용한 객체 유효성 검증  (0) 2023.04.22
[Spring] Spring profiles 통한 DB/개인정보 .gitignore에 추가하기  (0) 2023.04.11
    'Spring' 카테고리의 다른 글
    • [Spring] @Valid 메시지 message properties 사용하기, 한글 깨짐 해결
    • [Spring] @Valid @ControllerAdvice와 @ExceptionHandler 사용한 전역 예외 처리
    • [Spring] @Valid를 사용한 객체 유효성 검증
    • [Spring] Spring profiles 통한 DB/개인정보 .gitignore에 추가하기
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바