Coding 공부/IntelliJ

[IntelliJ_MariaDB] MariaDB설치 및 초기 설정, IntelliJ에서 MariaDB 연결, biuld.gradle설정, Assertion, CP, DTO, DAO, VO, Entity

CBJH 2024. 4. 23.
728x90
반응형

1. MariaDB

1.1 MariaDB 설치

  • 구글에 mariadb를 검색한다.

  • 10.6.17버전(수업용)을 다운받는다.

  • 비밀번호 설정
  • 외부에서 접속할 수 있도록 체크
  • UTF-8을 기본으로 사용하도록 설정(한글)

 

 

1.2 MariaDB > HeidSQL 신규 새션 만들기

  • 신규 클릭
  • 세션이름 바꾸기
  • 암호설정
  • 포트번호 확인
  • 열기

 

 

 

1.3 MariaDB > HeidSQL 데이터베이스 생성 

  • 왼쪽 테이블에 마우스 우클릭 > 새로 생성 > 데이터베이스
  • utf8mb4_general_ci로 생성한다.
  • 문자 하나 표시하는데 4바이트를 사용하겠다.(요즘 추세)

 

 

1.4 MariaDB > HeidSQL 사용자 추가하기

 

  • 추가
  • 사용자 이름 변경
  • 권한 변경
  • 암호 입력
  • 접근허용 전체권한 해제
  • 객체 추가 > webdb > 권한 설정 > 저장

 

 

1.5 MariaDB > HeidSQL 세션 관리자 추가

 

  • 신규
  • 세션 이름 변경 
  • 사용자명 변경
  • 암호 입력
  • 포트 변경
  • 데이터베이스 선택 : webdb

 

 

2. IntelliJ > MariaDB

 2.1 Database 설정

  • 포트 번호 변경
  • 유저명 입력
  • 비밀번호 입력
  • database 입력
  • Test Connection 클릭

 

2.2 쿼리 콘솔

  • IntelliJ의 console에서 sql문을 입력해 볼 수 있다. 
  • HeidSQL은 처음에 권한 설정이나 데이터 베이스 만들 때 사용하고 이외엔 잘 안쓰게된다.
  • 쿼리 콘솔 추가

 

2.3 build.gradle 설정

  • 프로젝트를 처음 만들 때 추가했던 의존성들이 build.gradle의 dependencies안에 들어있다.
  • 이후에 추가하고 수정 할 수 있다.
  • 구글에 MariaDB Java Client 검색 후 Gradle코드 복사 후 dependencies에 추가해준다.

 

  • 구글에 Log4j2 검색
  • 왼쪽 탭에서 Gradle찾아서 코드 복사
  • 디버그용으로 콘솔에 sysout으로 찍어 변수를 확인 했던 것을 간소화해주는 기능

 

dependencies에 코드를 입력하면 된다.

 

dependencies {
    compileOnly('jakarta.servlet:jakarta.servlet-api:5.0.0')

    testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")

    // https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client
    implementation 'org.mariadb.jdbc:mariadb-java-client:3.1.4'

    implementation 'org.apache.logging.log4j:log4j-api:2.23.1'
    implementation 'org.apache.logging.log4j:log4j-core:2.23.1'
// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j2-impl
    implementation 'org.apache.logging.log4j:log4j-slf4j2-impl:2.23.1'

    // https://mvnrepository.com/artifact/org.projectlombok/lombok
    compileOnly 'org.projectlombok:lombok:1.18.30'
    testCompileOnly 'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'

    // https://mvnrepository.com/artifact/com.zaxxer/HikariCP
    implementation 'com.zaxxer:HikariCP:5.0.1'

}

 

 

 

 

3. 기본 데이터베이스 용어

 

3.1 어썰션(Assertion) 이란?

 

  • 프로그램의 특정 지점에 위치한 어써션은 해당 지점에서 개발자가 반드시 참(true)이어야 한다고 생각하는 사항을 표현한 논리식이다. 
  • 어써션이 위반되는 경우(즉, 논리식 결과가 거짓)는 프로그램에 버그나 기타 문제가 있는 것을 암시한다.

 

3.2 커넥션 풀(CP)

 

  • 커넥션 풀(connection pool)은 데이터베이스와의 연결을 관리하기 위한 기술입니다. 애플리케이션이 데이터베이스와 통신할 때마다 새로운 연결을 만드는 것은 매우 비효율적이고 시간이 많이 걸립니다. 커넥션 풀은 이러한 문제를 해결하기 위해 사용됩니다.
  • 커넥션 풀의 작동 원리:
    • 사전 생성: 애플리케이션 시작 시, 커넥션 풀은 여러 개의 데이터베이스 연결을 미리 생성합니다.
    • 재사용: 애플리케이션이 데이터베이스 연결을 요청하면, 커넥션 풀에서 사용 가능한 연결을 할당합니다. 작업이 끝나면, 연결은 종료되지 않고 풀에 반환되어 다음 요청 때 재사용될 수 있습니다.
    • 관리: 커넥션 풀은 연결의 최대 개수, 최소 개수, 유휴 시간, 대기 시간 등을 관리하며, 필요에 따라 연결을 생성하거나 제거합니다.
  • 커넥션 풀은 데이터베이스 작업이 빈번하게 발생하는 복잡한 시스템에서 특히 중요한 역할을 하며, 시스템의 안정성과 성능을 크게 향상시킬 수 있습니다.
  • Hikari CP는 커넥션들의 설정을 하는데 도움을 주는 프레임워크이다.
  • 공유자원 사용에 대한 동기화 처리를 해준다.

 

 

3.3 개념적인 객체 모양

  • DTO (Data Transfer Object, 데이터 전송 객체)란 프로세스 간에 데이터를 전달하는 객체를 의미합니다.
  • DAO(Data Access Object)
    • "실제로 DB의 데이터에 접근하는 객체" DAO는 Service와 DB를 연결하는 역할을 한다.
    • 실제로 DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행합니다.
  • VO(Value Object)
    • 데이터베이스 테이블(Entity)과 동일한 형태로 만드는 Object.
    • "변경 불가능하며 오직 읽기만 가능 (Read-Only)"
    • setter는 없고 getter만 있다.
  • 엔터티(Entity) 
    • 실제, 독립체라는 뜻으로 데이터 모델링에서 사용되는 객체라고 생각하시면 되겠습니다.
    • 엔터티(Entity) : 엔터티는 데이터베이스 테이블이라고 생각하시면 이해가 편합니다.
    • 인스턴스(Instance) : 인스턴스는 데이터베이스에 저장된 데이터 내용의 전체 집합을 의미합니다. 
    • 속성(Attribute) : 속성은 인스턴스의 구성요소로써 더 이상 분리되지 않는 단위로, 업무에 필요한 데이터를 저장할 수 있습니다.

 

 

 

댓글