꾸물꾸물 졔의 개발공부

Springboot에서 MongoDB 연동 본문

Database/MongoDB

Springboot에서 MongoDB 연동

체제 2022. 11. 24. 22:03
  • org.springframework.boot : version '2.7.5'

 

 

의존성 추가 및 DB 연결


build.gradle

implementation 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive'
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

 

application.yml

spring:
  data:
    mongodb:
      port: '27017'
      host: 52.79.215.19
      authentication-database: admin
      username: o2a4
      database: o2a4
      password: 'password'
  • host : localhost 또는 MongoDB를 설치한 서버의 IP 
  • port : 포트번호
  • 계정 및 데이터베이스 정보  

 

 

Entity 생성


Chats.java

@Data
@Document(collection = "chats")
@TypeAlias("chats")
public class Chats {
    @Id
    private String _id;

    private String userid;

    private String content;

    private String sendTime;

    @Builder
    public Chats(String userid, String content, String sendTime){
        this.userid = userid;
        this.content = content;
        this.sendTime = sendTime;
    }
}

** 변수명에 (_) 언더스코어는 사용이 불가능하다. 몽고DB는 JPA 방식을 사용하는데, Spring-data-JPA 에서 (_) 는 예약어로 사용되기 때문이다.

 

 어노테이션 Annotation 

  • @Data : Lombok 라이브러리가 제공하는 어노테이션으로, getter와 setter를 자동 생성해준다. 
  • @Document : 몽고DB 의 어떤 Collection에 접근하여 데이터를 가져올지 명시한다. 
  • @TypeAlias : 별칭 지정, 이후에 mapper에서 접근할 때 별칭으로만 접근 가능하다. TypeAlias를 지정하지 않았을 경우엔, com.user.dto.~~ 처럼 패키지명을 포함하여 클래스명을 입력해야 한다. 

 빌더 패턴 Builder 

Builder 패턴을 사용해서 객체를 생성한다. id는 따로 지정하지 않고 자동으로 부여되는 ObjectID를 받을 것이기 때문에 빌더에 포함시키지 않는다. 

 

 

 

ChatRepository.java

@Repository
public interface ChatsRepository extends MongoRepository<Chats, Integer> {
}

MongoRepository를 상속받은 interface < Collection명, id > 

 

 

Service.java

JSONObject jsonObject = (JSONObject) jsonParser.parse(record.value());
String userid = jsonObject.get("userid").toString();
String content= jsonObject.get("content").toString();
String send_at= jsonObject.get("send_at").toString();


Chats chats=  Chats.builder().userid(userid).content(content).sendTime(send_at).build();
chatsRepository.save(chats);

builder() 를 통해 객체를 생성한 후, chatsRepository 인터페이스의 save() 함수를 통해 DB에 INSERT