본문 바로가기
  • 실행력이 모든걸 결정한다
개발 프로젝트/[팀] Web - SQL 교육 사이트

[팀 프로젝트] SQL 교육 사이트 - 20220823 안내 사항

by 김코더 김주역 2022. 8. 23.
반응형

1. 어제 강의 및 회의 내용

1) 2개의 DB를 적용

- 샘플 데이터용 DB와 유저 정보(게시글 포함)용 DB를 따로 구분하기 위해 2개의 DB를 사용하기로 했음

 

(1) 설정

- 2개의 DB를 사용하기 위해서는 2개의 EntityManagerFactory가 필요하며 이에 따른 DataSource나 TransactionManager도 별도로 추가해줘야 한다. 그리고 JpaRepository에 연결할 EntityManagerFactory와 TransactionManager을 설정해줘야 한다.

- 전반적인 방법은 아래 포스팅을 확인하도록 하자.

https://kimcoder.tistory.com/560

 

[SpringBoot] 2개의 DB를 사용하는 방법

SpringBoot 애플리케이션에서 1개의 DB만 사용하는 경우에는 @EnableJpaRepositories를 작성하지 않아도 JpaRepository에 대한 기본적인 설정이 이루어진다. 그러나 2개의 DB를 사용하는 경우에는 2개의 DB 설정

kimcoder.tistory.com

 

(2) 사용

- EntityManager 가져오기 : EntityManager은 EntityManagerFactory에 의해 생성되기 때문에 어떤 EntityManagerFactory에 의해 생성될지 지정해야 함. @PersistenceContext의 unitName 옵션에 EntityManagerFactory의 이름을 지정하면 됨.

@PersistenceContext(unitName = "sampleData")
EntityManager em;

 

- 트랜잭션 사용하기 : 트랜잭션을 사용할 때는 @Transactional 어노테이션을 사용하는데, 어떤 TransactionManager을 사용할지는 TransactionManager bean의 이름을 지정하면 됨. 일반적으로 bean의 이름은 bean 메소드 이름으로 등록됨

@Bean
public PlatformTransactionManager transactionManager() { // Bean 이름 = 메소드 이름
    JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(entityManagerFactory().getObject());
    jpaTransactionManager.setDataSource(dataSource());
    return jpaTransactionManager;
}

 

@Transactional("transactionManager")

 

 

2) 프론트 엔드쪽 회의 내용

- 프론트 엔드 작업 인력 : 주역, 찬명

- 각자 BootStrap 공부 해올 것

 

 

 

2. 오해할 수 있는 개념

- 내장 DB는 서버를 끄면 데이터가 날아감

- ddl-auto 옵션을 none으로 지정하면 DDL문이 자동으로 생성되지 않는다. 이 경우에는 테이블을 생성하는 CREATE TABLE문을 설정 파일에 직접 명시해야 함.

 

 

 

3. 기타 안내 사항

1) application.properties 내용 일부 수정

- 나중에 pull 할 때 다시 안내할 것이니 미리 수정하지 않아도 됩니다.

# 변경 전
spring.datasource.jdbc-url=jdbc:h2:~/test

# 변경 후
spring.datasource.jdbc-url=jdbc:h2:~/test;MODE=MySQL

 

 

2) 방언 변경

- Hibernate 방언을 H2에서 MySQL로 변경함

<DBConfig.class>

properties.setProperty("hibernate.dialect","org.hibernate.dialect.MySQL5InnoDBDialect");

- 나중에 마스터 브랜치에서 pull 하면 되니 각자 수정하지 않아도 됩니다.

 

 

3) 작업 방식 사전 안내

- TCP School에 있는 예제 코드를 H2 Console에서도 실행해보고 되는 내용만 학습 사이트에 반영할 계획임

- 오류나는 내용은 과감히 제외할 것임

- INSERT, UPDATE, DELETE문처럼 직접 데이터베이스의 결과를 확인할 수 없는 개념은 다중 택일 문제로 대체할 계획임

반응형

댓글