Mongodb 및 Java 시작하기 -Crud Operations Tutorial

com을 설정할 수 있습니다.Mongodb.MongotemPlate이 COM과 같은 더 높은 수준에서 드라이버를 통해 아직 지정되지 않은 경우 Write Operations에 사용할 속성을 작성합니다.Mongodb.몽고. MongotemPlate의 WriteConcern 속성이 설정되지 않은 경우 MongoDB 드라이버의 DB 또는 컬렉션 설정에서 세트로 기본값이됩니다.

요약

이 튜토리얼에서는 Mongodb와 Java를 시작하는 방법을 살펴볼 것입니다. MongoDB의 Java 드라이버 및 Spring Data MongoDB를 사용하여 기본 CRUD (작성, 읽기, 업데이트, 삭제) 작업을 다룰 것입니다.

키 포인트:

  1. Java에 대한 MongoDB 지원에는 광범위한 기능이 포함되어 있습니다.
  2. Spring은 Java 기반 @configuration 클래스 또는 XML 네임 스페이스를 사용하여 MongoDB에 대한 구성 지원을 제공합니다.
  3. Mongotemplate 클래스는 문서와 Pojos 간의 일반적인 MongoDB 작업 및 객체 매핑을 수행하는 데 유용한 유틸리티입니다.
  4. Spring의 휴대용 데이터 액세스 예외로의 예외 변환이 지원됩니다.
  5. Spring의 변환 서비스는 MongoDB의 기능이 풍부한 객체 매핑과 통합됩니다.
  6. 주석 기반 매핑 메타 데이터를 사용할 수 있으며 다른 형식을 지원하도록 확장 할 수 있습니다.
  7. 지속성 및 매핑 수명주기 이벤트가 지원됩니다.
  8. Java 기반 쿼리, 기준 및 업데이트 DSL이 제공됩니다.
  9. 사용자 정의 파인더 방법을 포함하여 저장소 인터페이스의 자동 구현이 지원됩니다.
  10. QueryDsl 통합을 사용하면 유형 안전 쿼리가 가능합니다.
  11. 크로스 스토어 지속성이 지원되므로 JPA 엔티티가 MongoDB를 사용하여 지속/검색 될 수 있습니다.
  12. MongoDB 통합을 위해 Log4J Log Appender가 제공됩니다.
  13. 지리 공간 통합은 지리 공간 데이터를 사용하는 데 사용할 수 있습니다.

질문:

  1. Q1 : MongoDB는 Java를 지원하는 기능이 무엇입니까??
  2. A1 : Java에 대한 MongoDB 지원에는 스프링 구성 지원, 객체 매핑, 예외 번역 등과 같은 다양한 기능이 포함되어 있습니다.

  3. Q2 : 봄에 MongoDB를 어떻게 구성 할 수 있습니까??
  4. A2 : MongoDB는 Java 기반 @configuration 클래스 또는 XML 네임 스페이스를 사용하여 스프링에 구성 할 수 있습니다.

  5. Q3 : Mongotemplate 클래스는 무엇입니까??
  6. A3 : Mongotemplate 클래스는 일반적인 MongoDB 작업을 수행하고 문서와 Pojos간에 객체 매핑을 제공함으로써 생산성을 높이는 도우미 클래스입니다.

  7. Q4 : Spring은 MongoDB 운영의 예외를 어떻게 처리합니까??
  8. A4 : 스프링은 예외를 휴대용 데이터 액세스 예외로 변환합니다.

  9. Q5 : MongoDB가 스프링 지원 객체 매핑과 통합됩니다?
  10. A5 : 예, Spring과의 MongoDB 통합에는 Spring의 변환 서비스와 통합 된 기능이 풍부한 객체 매핑이 포함됩니다.

  11. Q6 : MongoDB는 다른 메타 데이터 형식을 지원할 수 있습니다?
  12. A6 : 예, MongoDB의 주석 기반 매핑 메타 데이터는 다른 메타 데이터 형식을 지원하기 위해 확장 될 수 있습니다.

  13. Q7 : MongoDB는 지속성 및 매핑 수명주기 이벤트를 지원합니까??
  14. A7 : 예, MongoDB는 지속성 및 매핑 라이프 사이클 이벤트를 지원합니다.

  15. Q8 : MongoDB에서 Java 기반 쿼리, 기준 및 업데이트의 장점은 무엇입니까??
  16. A8 : Java 기반 쿼리, 기준 및 업데이트 DSLS.

  17. Q9 : 스프링이 저장소 인터페이스에서 사용자 정의 파인더 메소드를 자동으로 구현할 수 있습니까??
  18. A9 : 예, 스프링은 저장소 인터페이스에서 사용자 정의 찾기 메소드를 자동으로 구현할 수 있습니다.

  19. Q10 : MongoDB에서 QueryDsl 통합의 이점은 무엇입니까??
  20. A10 : MongoDB의 QueryDsl 통합을 통해 유형 안전 쿼리가 가능합니다.

  21. Q11 : MongoDB를 크로스 스토어 지속성에 사용할 수 있습니다?
  22. A11 : 예, MongoDB.

  23. Q12 : MongoDB는 Log4J 로그 appender를 제공합니까??
  24. A12 : 예, Mongodb.

  25. Q13 : MongoDB는 지리 공간 데이터를 지원합니다?
  26. A13 : 예, MongoDB는 지리 공간 데이터와의 작업을위한 통합을 제공합니다.

시작하기

Spring Mongodb 지원을 시작하려면 Mongodb 1이 필요합니다.4 이상 및 Java SE 5 이상. 최신 프로덕션 릴리스를 사용하는 것이 좋습니다 (2.0.이 글을 쓰는 시점에서 x).

다음 단계를 따라 작업 환경을 설정하십시오

  1. 실행중인 MongoDB 서버를 설정하십시오. MongoDB 인스턴스를 시작하는 방법에 대한 지침은 MongoDB Quick Start Guide를 참조하십시오.
  2. STS (Spring Tool Suite) 또는 기타 통합 개발 환경 (IDE)에서 스프링 기반 프로젝트를 만듭니다.
  3. 프로젝트 POM에 Spring Data MongoDB 의존성 포함.XML 파일 :
  4.         <의존>
                <GroupId>org.SpringFramework.데이터</GroupId>
                <인공물>Spring-Data-MongoDB</artifactid>
                <버전>1.1.0.풀어 주다</버전>
            </의존>
        
  5. POM에 지정된 Spring의 올바른 버전이 있는지 확인하십시오.XML :
  6.         <속성>
                <봄.버전>삼.1.2.풀어 주다</봄.버전>
            </속성>
        
  7. Spring Milestone 저장소를 POM에 추가하십시오.XML :
  8.         <저장소>
                <저장소>
                    <ID>스프링-마일스톤</ID>
                    <이름>Spring Maven Milestone 저장소</이름>
                    <URL>http : // repo.Springsource.org/libs-milestone</url>
                </저장소>
            </리포지토리>
        
  9. log4J에서 디버그로 Log4J 로깅 레벨을 설정합니다.속성 파일 :
  10.         log4J.범주.org.SpringFramework.데이터.문서.MongoDB = 디버그
            log4J.appender.stdout.공들여 나열한 것.ConverionPattern = %d %5p %40.40C :%4L-%m%n
        
  11. 지속될 간단한 사람 클래스를 만듭니다
  12.         패키지 조직.봄.Mongodb.예;
            공공 계급 사람 {
                개인 문자열 ID;
                개인 문자열 이름;
                사적인 int 연령;
                공개 사람 (문자열 이름, int age) {
                    이것.이름 = 이름;
                    이것.나이 = 연령;
                }
                public String getId () {
                    반환 ID;
                }
                공개 문자열 getName () {
                    반환 이름;
                }
                public int getage () {
                    귀환 연령;
                }
                @우세하다
                공개 문자열 tostring () {
                    "person [id =" + id + ", name =" + name + ", age =" + age + "];
                }
            }
        
  13. 실행할 기본 응용 프로그램 작성 :
  14.         패키지 조직.봄.Mongodb.예;
            정적 조직을 가져옵니다.SpringFramework.데이터.Mongodb.핵심.질문.기준.어디;
            수입 조직.아파치.평민.벌채 반출.통나무;
            수입 조직.아파치.평민.벌채 반출.logfactory;
            수입 조직.SpringFramework.데이터.Mongodb.핵심.몽구퍼;
            수입 조직.SpringFramework.데이터.Mongodb.핵심.Mongotemplate;
            수입 조직.SpringFramework.데이터.Mongodb.핵심.질문.질문;
            com을 가져옵니다.Mongodb.몽고;
            공개 클래스 Mongoapp {
                개인 정적 최종 로그 로그 = logfactory.getLog (몽고프.수업);
                public static void main (string [] args)은 예외 {
                    Mongooperations Mongoops = New Mongotemplate (New Mongo (), "데이터베이스");
                    몽프.삽입 (새로운 사람 ( "Joe", 34));
                    통나무.정보 (Mongoops.FindOne (새 질문.( "Joe")), 사람.수업));
                }
            }
        

Mongodb 및 Java 시작하기 -Crud Operations Tutorial

com을 설정할 수 있습니다.Mongodb.MongotemPlate이 COM과 같은 더 높은 수준에서 드라이버를 통해 아직 지정되지 않은 경우 Write Operations에 사용할 속성을 작성합니다.Mongodb.몽고 . MongotemPlate의 WriteConcern 속성이 설정되지 않은 경우 MongoDB 드라이버의 DB 또는 컬렉션 설정에서 세트로 기본값이됩니다.

MongoDB는 Java를 지원합니까?

MongoDB 지원에는 아래에 요약 된 다양한 기능이 포함되어 있습니다.

  • Java 기반 @Configuration 클래스 또는 몽고 드라이버 인스턴스 및 복제 세트 용 XML 네임 스페이스를 사용한 스프링 구성 지원
  • 일반적인 몽고 운영을 수행하는 생산성을 높이는 Mongotemplate 헬퍼 클래스. 문서와 Pojos간에 통합 객체 매핑이 포함되어 있습니다.
  • 스프링의 휴대용 데이터 액세스 예외 계층으로의 예외 변환
  • 스프링의 변환 서비스와 통합 된 풍부한 객체 매핑 기능
  • 주석 기반 매핑 메타 데이터이지만 다른 메타 데이터 형식을 지원할 수있는 확장 가능
  • 지속성 및 매핑 수명주기 이벤트
  • Java 기반 쿼리, 기준 및 업데이트 DSL
  • 사용자 정의 찾기 방법 지원을 포함하여 저장소 인터페이스의 자동 구현.
  • 유형-안전 쿼리를 지원하기위한 querydsl 통합.
  • 크로스 스토어 지속성 – 필드가있는 JPA 엔티티에 대한 지원 Mongodb를 사용하여 투명하게 지속/검색
  • log4j log appender
  • 지리 공간 통합

대부분의 작업에 대해서는 Mongotemplate 또는 리치 매핑 기능을 활용하는 저장소 지원을 사용하여 자신을 찾을 수 있습니다. Mongotemplate는 카운터 증가 또는 임시 CRUD 작업과 같은 기능에 액세스 할 수있는 장소입니다. MongotemPlate은 또한 콜백 방법을 제공하여 ORG와 같은 저수준 API 아피팩트를 쉽게 얻을 수 있습니다.몽고.MongoDB와 직접 의사 소통하는 DB. 다양한 API 아티팩트에 대한 명명 규칙의 목표는 기본 MongoDB Java 드라이버의 것을 복사하여 기존 지식을 스프링 API에 쉽게 매핑 할 수있는 것입니다.

5.1 시작하기

Spring MongoDB 지원에는 MongoDB 1이 필요합니다.4 이상 및 Java SE 5 이상. 최신 생산 릴리스 (2.0.이 글을 쓰는 시점에서 x 권장됩니다. 작업 환경을 조정하는 쉬운 방법은 STS에서 스프링 기반 프로젝트를 만드는 것입니다.

먼저 실행중인 MongoDB 서버를 설정해야합니다. MongoDB 인스턴스를 시작하는 방법에 대한 설명은 MongoDB 빠른 시작 가이드를 참조하십시오. 일단 설치되면 MongoDB는 일반적으로 다음 명령을 실행하는 문제입니다. mongo_home/bin/mongod

sts에서 스프링 프로젝트를 만들려면 파일 -> 신규 -> 스프링 템플릿 프로젝트 -> 간단한 스프링 유틸리티 프로젝트 -> 프롬프트시 예를 누릅니다. 그런 다음 프로젝트와 org와 같은 패키지 이름을 입력하십시오.봄.Mongodb.예.

그런 다음 Pom에 다음을 추가하십시오.XML 종속성 섹션.

    org.SpringFramework.데이터 Spring-Data-MongoDB 1.1.0.풀어 주다  

또한 POM에서 스프링 버전을 변경하십시오.XML

 삼.1.2.풀어 주다 

또한 Maven의 Spring Milestone 저장소의 위치를 ​​POM에 추가해야합니다.요소의 동일한 수준에있는 XML

   스프링-마일스톤 Spring Maven Milestone 저장소 http : // repo.Springsource.org/libs-milestone  

저장소는 여기에서도 탐색 할 수 있습니다.

추가 정보를 보려면 디버깅으로 로깅 레벨을 설정하고 LOG4J를 편집 할 수도 있습니다.가질 속성 파일

log4J.범주.org.SpringFramework.데이터.문서.MongoDB = Debug log4J.appender.stdout.공들여 나열한 것.ConverionPattern = %d %5p %40.40C :%4L-%m%n

지속될 간단한 사람 클래스를 만듭니다

패키지 org.봄.Mongodb.예; 공공의 수업 사람 < 사적인 문자열 ID; 사적인 문자열 이름; 사적인 int 나이; 공공의 사람 (문자열 이름, int 나이) < 이것.이름 = 이름; 이것.나이 = 연령; > 공공의 String getId () < 반품 ID; > 공공의 문자열 getName () < 반품 이름; > 공공의 int getage () < 반품 나이; > @우세하다 공공의 문자열 toString () < 반품 "사람 [id hl-string"> ", name hl-string"> ", age hl-string"> "]."; >>

실행할 주요 응용 프로그램

패키지 org.봄.Mongodb.예; 수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.기준.어디; 수입 org.아파치.평민.벌채 반출.통나무; 수입 org.아파치.평민.벌채 반출.logfactory; 수입 org.SpringFramework.데이터.Mongodb.핵심.몽구퍼; 수입 org.SpringFramework.데이터.Mongodb.핵심.Mongotemplate; 수입 org.SpringFramework.데이터.Mongodb.핵심.질문.질문; 수입 com.Mongodb.몽고; 공공의 수업 몽고프 < 사적인 공전 결정적인 log log = logfactory.getLog (몽고프.수업); 공공의 공전 무효의 main (String [] args) 던졌습니다 예외 < MongoOperations mongoOps = 새로운 mongotemplate (새로운 몽고 (), "데이터 베이스"); 몽프.끼워 넣다(새로운 사람("조", 34)); 통나무.정보 (Mongoops.findone (새로운 쿼리 (여기서)"이름")).이다("조")), 사람.수업)); 몽프.dropcollection ("사람"); >>

이것은 다음 출력을 생성합니다

10 : 01 : 32,062 디버그 apping.MongopersistentityIndexcreator : 80- 클래스 클래스 조직 분석.봄.예.색인 정보를위한 사람. 10 : 01 : 32,265 디버그 램 워크.데이터.Mongodb.핵심.Mongotemplate : 631- 삽입 필드 삽입 : [_class, age, name] 컬렉션 : 사람 10 : 01 : 32,765 Debug Ramwork.데이터.Mongodb.핵심.mongotemplate : 1243- 쿼리를 사용하는 Findone : < "name" : "Joe">DB에서.수집 : 데이터베이스.사람 10 : 01 : 32,953 정보 조직.봄.Mongodb.예.MongoApp : 25- 사람 [ID = 4DDBBA3C0BE56B7E1B210166, name = joe, age = 34] 10 : 01 : 32,984 디버그 RAMWORK.데이터.Mongodb.핵심.Mongotemplate : 375- 삭제 된 컬렉션 [데이터베이스.사람]

이 간단한 예에서도 주목해야 할 것은 거의 없습니다

  • 표준 COM을 사용하여 중앙 헬퍼 클래스 인 Mongotemplate의 중앙 헬퍼 클래스를 인스턴스화 할 수 있습니다.Mongodb.몽고 객체 및 사용할 데이터베이스 이름.
  • Mapper는 추가 메타 데이터가 필요없이 표준 Pojo 객체에 대해 작동합니다 (선택적으로 해당 정보를 제공 할 수는 있지만. 여기를 보아라.)).
  • 컨벤션은 ID 필드를 처리하는 데 사용되어 데이터베이스에 저장 될 때 ID 필드를 객체로 변환합니다.
  • 매핑 규칙은 현장 액세스를 사용할 수 있습니다. 개인 수업에는 getter 만 있습니다.
  • 생성자 인수 이름이 저장된 문서의 필드 이름과 일치하면 객체를 인스턴스화하는 데 사용됩니다

5.2 예제 저장소

도서관의 작동 방식에 대한 느낌을 얻기 위해 다운로드하고 놀 수있는 몇 가지 예제가 포함 된 Github 저장소가 있습니다.

5.3 스프링과 함께 Mongodb에 연결

MongoDB와 Spring을 사용할 때의 첫 번째 작업 중 하나는 COM을 만드는 것입니다.Mongodb.IOC 컨테이너를 사용하는 몽고 객체. Java 기반 Bean Metadata 또는 XML 기반 Bean Metadata를 사용하여이를 수행하는 두 가지 주요 방법이 있습니다. 이것들은 다음 섹션에서 설명합니다.

XML 기반 메타 데이터 대신 Java 기반 Bean 메타 데이터를 사용하여 스프링 컨테이너를 구성하는 방법에 익숙하지 않은 사람들은 참조 문서의 높은 레벨 소개와 여기에서 자세한 문서를 참조하십시오.

5.삼.1 Java 기반 메타 데이터를 사용하여 몽고 인스턴스 등록

COM 인스턴스를 등록하기 위해 Java 기반 Bean 메타 데이터를 사용하는 예.Mongodb.몽고는 아래에 나와 있습니다

예 5.1. com 등록.Mongodb.Java 기반 Bean 메타 데이터를 사용한 몽고 객체

@구성 공공의 수업 AppConfig < / * * 표준 몽고 드라이버 API를 사용하여 COM을 만듭니다.Mongodb.몽고 인스턴스. */ 공공의 @콩 몽고 몽고 () 던졌습니다 알 수없는 hostexception < 반품 새로운 몽고 (Mongo)"로컬 호스트"); >>

이 접근법을 사용하면 표준 COM을 사용할 수 있습니다.Mongodb.이미 사용하는 데 사용될 수있는 몽고 API는 알 수없는 hostexception 확인 예외로 코드를 오염시킵니다. Java 기반 Bean Metadata가 객체 종속성을 설정하는 수단으로 메소드를 사용하여 호출 코드를 혼란스럽게 만들기 때문에 확인 된 예외의 사용은 바람직하지 않습니다.

대안은 com 인스턴스를 등록하는 것입니다.Mongodb.Spring ‘s Mongofactorybean을 사용하는 컨테이너가있는 몽고 인스턴스 . com을 인스턴스화하는 것과 비교할 때.Mongodb.몽고 인스턴스 직접, FactoryBean 접근법은 점검 된 예외를 던지지 않으며 컨테이너에 컨테이너를 @repository Angotation과 함께 사용 된 데이터 액세스 클래스에 대한 MongoDB 예외를 예외로 변환하는 Exception -Translator 구현을 제공하는 이점이 추가됩니다. 이 계층 구조 및 @repository 사용은 Spring의 DAO 지원 기능에 설명되어 있습니다.

@Repository 주석화 클래스에서 예외 번역을 지원하는 Java 기반 Bean 메타 데이터의 예는 다음과 같습니다

예 5.2. com 등록.Mongodb.Spring ‘s Mongofactorybean을 사용하고 Spring의 예외 번역 지원을 활성화하는 몽고 객체

@구성 공공의 수업 AppConfig < / * * com을 생성하는 Factory Bean.Mongodb.몽고 인스턴스 */ 공공의 @콩 Mongofactorybean Mongo () < MongoFactoryBean mongo = 새로운 MongofactoryBean (); 몽고.sethost ("로컬 호스트"); 반품 몽고; >>

com에 액세스하려면.Mongodb.Mongofactorybean이 다른 @Configuration 또는 자신의 클래스에서 만든 몽고 객체 “Private @autowired Mongo Mongo;”필드를 사용하십시오.

5.삼.2 XML 기반 메타 데이터를 사용하여 몽고 인스턴스 등록

Spring의 전통적인 XML 네임 스페이스를 사용하여 COM 인스턴스를 등록 할 수 있습니다.Mongodb.컨테이너가있는 몽고, XML은 범용이기 때문에 상당히 말이 될 수 있습니다. XML 네임 스페이스. 몽고 네임 스페이스는 몽고 인스턴스 서버 위치, 복제품 및 옵션을 만들도록합니다.

몽고 네임 스페이스 요소를 사용하려면 몽고 스키마를 참조해야합니다

예 5.삼. MongoDB를 구성하는 XML 스키마

  xmlns="http : // www.SpringFramework.org/schema/beans " XMLNS : XSI="http : // www.W3.org/2001/xmlschema-instance " xmlns : 컨텍스트="http : // www.SpringFramework.org/schema/컨텍스트 " XMLNS : 몽고="http : // www.SpringFramework.org/schema/data/mongo " XSI : 회로 세정= "http : // www.SpringFramework.org/schema/context http : // www.SpringFramework.org/schema/context/spring-context-3.0.XSD http : // www.SpringFramework.org/schema/data/mongo http : // www.SpringFramework.org/schema/data/mongo/spring-mongo-1.0.XSD http : // www.SpringFramework.org/schema/beans http : // www.SpringFramework.org/schema/beans/spring-beans-3.0.xsd ">   

Mongooptions를 사용한보다 고급 구성이 아래에 나와 있습니다 (이 값은 권장되지 않습니다)

예 5.4. com을 구성하려면 XML 스키마.Mongodb.Mongoptions가있는 몽고 대상

  주인="로컬 호스트" 포트="27017">  호스트 당 연결="8" 스레드를 허용하여 블록-연결-연결 다중 플라이어="4" 연결 시간 초과="1000" 최대 웨이트 타임="1500>" 자동 연결 레트 레이트="진실" 소켓 키핑-알리="진실" 소켓-시간 초과="1500" 노예 -ok="진실" 쓰기 수="1" 쓰기 시간 초과="0" write-fsync="진실"/>   

복제 세트를 사용한 구성은 다음과 같습니다.

예 5.5. com을 구성하는 XML 스키마.Mongodb.복제 세트가있는 몽고 객체

 ID="Replicasetmongo" 복제 세트="127.0.0.1 : 27017, Localhost : 27018 "/> 

5.삼.3 mongodbfactory 인터페이스

com.Mongodb.Mongo는 MongoDB 드라이버 API의 진입 점으로, 특정 MongoDB 데이터베이스 인스턴스에 연결하려면 데이터베이스 이름 및 선택적 사용자 이름 및 비밀번호와 같은 추가 정보가 필요합니다. 해당 정보를 사용하면 com을 얻을 수 있습니다.Mongodb.DB 객체 및 특정 MongoDB 데이터베이스 인스턴스의 모든 기능에 액세스하십시오. 봄은 조직을 제공합니다.SpringFramework.데이터.Mongodb.핵심.데이터베이스에 대한 연결을 부트 스트랩하기 위해 아래에 표시된 mongbfactory 인터페이스.

공공의 상호 작용 mongodbfactory < DB getDb() 던졌습니다 DataAccessException; db getdb (String dbname) 던졌습니다 DataAccessException; >

다음 섹션에서는 Java 또는 XML 기반 메타 데이터를 사용하여 Contiainer를 사용하여 MongoDBFactory 인터페이스 인스턴스를 구성하는 방법을 보여줍니다. 결과적으로 MongodbFactory 인스턴스를 사용하여 Mongotemplate를 구성 할 수 있습니다.

클래스 org.SpringFramework.데이터.Mongodb.핵심.simplemongodbfactory는 mongodbfactory 인터페이스를 구현하고 표준 com으로 생성됩니다.Mongodb.몽고 인스턴스, 데이터베이스 이름 및 선택적 조직.SpringFramework.데이터.입증.userCredentials 생성자 인수.

IOC 컨테이너를 사용하여 MongotemPlate 인스턴스를 만드는 대신 아래 그림과 같이 표준 Java 코드로 사용할 수 있습니다.

공공의 수업 몽고프 < 사적인 공전 결정적인 log log = logfactory.getLog (몽고프.수업); 공공의 공전 무효의 main (String [] args) 던졌습니다 예외 < MongoOperations mongoOps = 새로운 mongotemplate (New SimpleMongoDBfactory (New Mongo (), "데이터베이스")); 몽프.끼워 넣다(새로운 사람("조", 34)); 통나무.정보 (Mongoops.findone (새로운 쿼리 (여기서)"이름")).이다("조")), 사람.수업)); 몽프.dropcollection ("사람"); >>

Bold의 코드는 SimpleMongoDBfactory의 사용을 강조하고 시작 섹션에 표시된 목록 간의 유일한 차이점입니다.

5.삼.4 Java 기반 메타 데이터를 사용하여 Mongodbfactory 인스턴스 등록

컨테이너에 mongodbfactory 인스턴스를 등록하려면 이전 코드 목록에서 강조 표시된 것과 유사한 코드를 작성합니다. 간단한 예는 다음과 같습니다

@구성 공공의 수업 Mongoconfiguration < 공공의 @콩 mongbfactory mongodbfactory () 던졌습니다 예외 < 반품 새로운 SimpleMongoDBfactory (새로운 몽고 (), "데이터 베이스"); >>

사용자 이름과 비밀번호를 정의하려면 조직 인스턴스를 만듭니다.SpringFramework.데이터.입증.userCredentials를 아래 그림과 같이 생성자로 전달하십시오. 이 목록은 또한 mongodbfactory 레지스터를 사용하여 컨테이너가있는 mongotemplate 인스턴스를 보여줍니다.

@구성 공공의 수업 Mongoconfiguration < 공공의 @콩 mongbfactory mongodbfactory () 던졌습니다 예외 < UserCredentials userCredentials = 새로운 userCredentials ("조", "비밀"); 반품 새로운 SimpleMongoDBfactory (새로운 몽고 (), "데이터 베이스", userCredentials); > 공공의 @콩 mongotemplate mongotemplate () 던졌습니다 예외 < 반품 새로운 mongotemplate (mongodbfactory ()); >>

5.삼.5 XML 기반 메타 데이터를 사용하여 MongoDBfactory 인스턴스 등록

Mongo 네임 스페이스는 네임 스페이스 사용과 비교하여 단순한 측정 정보를 생성하는 확실한 방법을 제공합니다. 간단한 사용법은 다음과 같습니다

 dbname="데이터 베이스">

위의 예에서 com.Mongodb.몽고 인스턴스는 기본 호스트와 포트 번호를 사용하여 생성됩니다. 컨테이너에 등록 된 SimpleMongoDBfactory는 ID 속성에 대한 값이 지정되지 않는 한 ID ‘MongoDBfactory’로 식별됩니다.

당신은 또한 기본 com의 호스트와 포트를 제공 할 수 있습니다.Mongodb.데이터베이스의 사용자 이름 및 비밀번호 외에 아래와 같이 Mongo 인스턴스.

 ID="또 다른 mongodbfactory" 주인="로컬 호스트" 포트="27017" dbname="데이터 베이스" 사용자 이름="조" 비밀번호="비밀"/>

COM에서 추가 옵션을 구성 해야하는 경우.Mongodb.단순한 몬고드 Bfactory를 만드는 데 사용되는 몽고 인스턴스 아래와 같이 몽고 리프 속성을 사용하여 기존 콩을 참조 할 수 있습니다. 또 다른 일반적인 사용 패턴을 보여주기 위해이 목록은 속성 자리 표시자를 사용하여 구성을 매개 변수화하고 mongotemplate 생성을 보여줍니다 .

 위치="ClassPath :/com/myapp/mongodb/config/mongo.속성"/>  주인="$" 포트="$">  호스트 당 연결="$" 스레드를 허용하여 블록-연결-연결 다중 플라이어="$" 연결 시간 초과="$" 최대 웨이트 타임="$" 자동 연결 레트 레이트="$" 소켓 키핑-알리="$" 소켓-시간 초과="$" 노예 -ok="$" 쓰기 수="1" 쓰기 시간 초과="0" write-fsync="진실"/>   dbname="데이터 베이스" 몽고 리프="몽고"/>  ID="또 다른 mongotemplate" 수업="org.SpringFramework.데이터.Mongodb.핵심.mongotemplate ">  이름="mongodbfactory" 심판="mongodbfactory"/> 

5.4 Mongotemplate 소개

패키지 org에 위치한 클래스 Mongotemplate.SpringFramework.데이터.문서.Mongodb, Spring ‘s MongoDB 지원의 중심 클래스는 데이터베이스와 상호 작용할 수있는 풍부한 기능을 제공합니다. 템플릿은 MongoDB 문서의 생성, 업데이트, 삭제 및 쿼리를 제공하는 편의 작업을 제공하며 도메인 객체와 MongoDB 문서간에 매핑을 제공합니다.

구성되면 MongotemPlate은 스레드 안전이며 여러 인스턴스에서 재사용 할 수 있습니다.

MongoDB 문서와 도메인 클래스 간의 매핑은 인터페이스 Mongoconverter의 구현을 위임하여 수행됩니다 . Spring은 SimplemappingConverter 및 MongomappingConverter의 두 가지 구현을 제공하지만 자신의 컨버터를 작성할 수도 있습니다. 자세한 정보는 Mongocverters의 섹션을 참조하십시오.

Mongotemplate 클래스는 인터페이스 Mongooperations를 구현합니다 . 가능한 한 Mongooperations의 방법은 MongoDB Driver Collection Object에서 사용할 수있는 방법의 이름을 따서 API를 Driver API에 익숙한 기존 MongoDB 개발자에게 친숙하게 만들 수 있습니다. 예를 들어, “찾기”, “findandmodify”, “findone”, “insert”, “remove”, “save”, “save”, “update”및 “updatemulti”와 같은 메소드가 있습니다. 디자인 목표는 기본 MongoDB 드라이버와 Mongoperations의 사용 사이의 전환을 가능한 한 쉽게 만드는 것이 었습니다 . 두 API 사이의 주요 차이점은 Mongoperations가 dbobject 대신 도메인 객체로 전달 될 수 있고 dbobject를 채우는 대신 쿼리, 기준 및 업데이트 작업을위한 유창한 API가 있다는 것입니다.

Mongotemplate 인스턴스에서 작업을 참조하는 선호하는 방법은 인터페이스 Mongooperations를 통한 것입니다 .

MongotemPlate에서 사용하는 기본 변환기 구현은 MongomappingConverter입니다. MongomappingConverter는 추가 메타 데이터를 사용하여 객체를 문서에 매핑하는 것을 지정할 수 있지만 ID 및 수집 이름 매핑에 일부 규칙을 사용하여 추가 메타 데이터가 포함되지 않는 객체를 변환 할 수 있습니다. 매핑 주석의 사용뿐만 아니라 이러한 규칙은 매핑 장에 설명되어 있습니다.

M2 릴리스에서 SimplemappingConverter가 기본값이 되었으며이 클래스는 이제 MongomappingConverter가 기능을 사용하여 더 이상 사용되지 않았습니다.

Mongotemplate의 또 다른 중심 특징은 MongoDB Java 드라이버에서 스프링의 휴대용 데이터 액세스 예외에 대한 예외 번역입니다. 자세한 내용은 예외 번역 섹션을 참조하십시오.

Mongotemplate에는 MongoDB Driver API에 직접 액세스 해야하는 경우 Mongotemplate에 쉽게 액세스 해야하는 경우 Mongotemplate에 쉽게 액세스 해야하는 경우 Mongotemplate에 쉽게 액세스 해야하는 경우 Mongotemplate에 쉽게 액세스 해야하는 경우 MongoTemplate에 쉽게 액세스 해야하는 경우 MongoTemplate에서 명시 적으로 노출되지 않은 기능에 액세스 해야하는 경우 여러 실행 콜백 방법 중 하나를 사용하여 드라이버 API에 대한 액세스에 액세스 할 수 있습니다. 실행 콜백은 COM에 대한 참조를 제공합니다.Mongodb.수집 또는 com.Mongodb.DB 객체. 자세한 내용은 섹션 실행 콜백을 참조하십시오.

이제 스프링 컨테이너의 맥락에서 mongotemplate로 작업하는 방법의 예를 살펴 보겠습니다.

5.4. Mongotemplate 인스턴스화

Java를 사용하여 아래와 같이 Mongotemplate 인스턴스를 작성하고 등록 할 수 있습니다.

예 5.6. com 등록.Mongodb.몽고 객체 및 Spring의 예외 번역 지원 가능

@구성 공공의 수업 AppConfig < 공공의 @콩 몽고 몽고 () 던졌습니다 예외 < 반품 새로운 몽고 (Mongo)"로컬 호스트"); > 공공의 @콩 mongotemplate mongotemplate () 던졌습니다 예외 < 반품 새로운 mongotemplate (mongo (), "mydatabase"); >>

Mongotemplate의 몇 가지 과부하 생성자가 있습니다. 이것들은

  • Mongotemplate (Mongo Mongo, String DatabaseName) – Take The Com.Mongodb.Mongo Object 및 기본 데이터베이스 이름에서 작동 할 기본 데이터베이스 이름.
  • Mongotemplate (Mongo Mongo, String DatabaseName, UserCredentials UserCredentials) – 데이터베이스를 인증하기위한 사용자 이름과 비밀번호 추가.
  • Mongotemplate (Mongodbfactory mongodbfactory) – com을 캡슐화 한 mongodbfactory 객체를 가져옵니다.Mongodb.몽고 객체, 데이터베이스 이름 및 사용자 이름 및 비밀번호.
  • Mongotemplate (Mongodbfactory mongodbfactory, mongoconverter mongoconverter) – 매핑에 사용할 몽고 컨버터 추가.

Spring의 XML 스키마를 사용하여 Mongotemplate를 구성 할 수도 있습니다.

"로컬 호스트" 포트 ="27017"/> "mongotemplate" 수업="org.SpringFramework.데이터.Mongodb.핵심.mongotemplate "> "몽고"/> "DatabaseName" 값 ="지리 공간"/> 

MongotemPlate을 만들 때 설정할 수있는 다른 선택적 특성은 기본 작가 esultCheckingPolicy, WriteConcern 및 ReadPreference입니다 .

Mongotemplate 인스턴스에서 작업을 참조하는 선호하는 방법은 인터페이스 Mongooperations를 통한 것입니다 .

작가 소문 체크 정책

개발 중에는 COM이면 예외를 기록하거나 던지는 것이 매우 유용합니다.Mongodb.MongoDB 작업에서 반환 된 Writeresult에는 오류가 포함되어 있습니다. 개발 중에이 작업을 수행하는 것을 잊어 버린 다음 성공적으로 실행되는 것처럼 보이는 응용 프로그램으로 끝나지만 실제로는 데이터베이스가 귀하의 기대에 따라 수정되지 않았습니다. Mongotemplate의 WriteresultChecking 속성을 다음 값, 로그, 예외 또는 오류를 기록하거나 예외를 기록하거나 아무것도하지 않는 열거로 설정하십시오. 기본값은 WriteresultChecking 값을 사용하지 않는 것입니다.

writeconcern

com을 설정할 수 있습니다.Mongodb.MongotemPlate이 COM과 같은 더 높은 수준에서 드라이버를 통해 아직 지정되지 않은 경우 Write Operations에 사용할 속성을 작성합니다.Mongodb.몽고 . MongotemPlate의 WriteConcern 속성이 설정되지 않은 경우 MongoDB 드라이버의 DB 또는 컬렉션 설정에서 세트로 기본값이됩니다.

writeconcernresolver

수술별로 다른 writeCancern 값을 설정하려는 고급 사례 (제거, 업데이트, 삽입 및 작업을 위해) Mongotemplate에서 writeConcerNresolver라는 전략 인터페이스를 구성 할 수 있습니다 . MongotemPlate은 Pojos를 지속하는 데 사용되므로 WriteConcerNresolver를 사용하면 특정 Pojo 클래스를 writeconcern 값으로 매핑 할 수있는 정책을 만들 수 있습니다. writeconcernresolver 인터페이스는 다음과 같습니다.

공공의 상호 작용 writeconcernresolver

전달 된 인수 인 Mongoaction은 사용될 WRITECENCENT 값을 결정하거나 템플릿 자체의 값을 기본값으로 사용하는 데 사용하는 것입니다. MongoAction에는 컬렉션 이름이 포함되어 있습니다.랭.Pojo의 클래스, 변환 된 dbobject 및 열거 (MongoactionOperation : 제거, 업데이트, 삽입, insert_list, 저장) 및 기타 문맥 정보. 예를 들어,

개인 클래스 MyAppWriteConcerNresolver는 WriteCernresolver를 구현합니다 < public WriteConcern resolve(MongoAction action) < if (action.getEntityClass().getSimpleName().contains("Audit")) < return WriteConcern.NONE; >그렇지 않으면 if (행동.getEntityClass ().getsimplename ().포함 ( "메타 데이터")) < return WriteConcern.JOURNAL_SAFE; >반환 조치.getDefaultWriteConcern (); >>

5.5 문서 저장, 업데이트 및 제거

MongotemPlate은 도메인 객체를 저장, 업데이트 및 삭제하고 해당 객체를 MongoDB에 저장된 문서에 매핑 할 수있는 간단한 방법을 제공합니다.

사람과 같은 간단한 수업이 주어졌습니다

공공의 수업 사람 < 사적인 문자열 ID; 사적인 문자열 이름; 사적인 int 나이; 공공의 사람 (문자열 이름, int 나이) < 이것.이름 = 이름; 이것.나이 = 연령; > 공공의 String getId () < 반품 ID; > 공공의 문자열 getName () < 반품 이름; > 공공의 int getage () < 반품 나이; > @우세하다 공공의 문자열 toString () < 반품 "사람 [id hl-string"> ", name hl-string"> ", age hl-string"> "]."; >>

아래와 같이 객체를 저장, 업데이트 및 삭제할 수 있습니다.

Mongooperations는 Mongotemplate가 구현하는 인터페이스입니다.

패키지 org.봄.예; 수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.기준.어디; 수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.업데이트.업데이트; 수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.질문.질문; 수입 자바.유도.목록; 수입 org.아파치.평민.벌채 반출.통나무; 수입 org.아파치.평민.벌채 반출.logfactory; 수입 org.SpringFramework.데이터.Mongodb.핵심.몽구퍼; 수입 org.SpringFramework.데이터.Mongodb.핵심.Mongotemplate; 수입 org.SpringFramework.데이터.Mongodb.핵심.단순한 분도 형식; 수입 com.Mongodb.몽고; 공공의 수업 몽고프 < 사적인 공전 결정적인 log log = logfactory.getLog (몽고프.수업); 공공의 공전 무효의 main (String [] args) 던졌습니다 예외 < MongoOperations mongoOps = 새로운 mongotemplate (새로운 SimpleMongoDBfactory (새로운 몽고 (), "데이터 베이스")); 사람 p = 새로운 사람("조", 34); // 삽입물은 처음에 객체를 데이터베이스에 저장하는 데 사용됩니다. 몽프.삽입 (p); 통나무.정보 ("삽입 :" + 피); // 찾다 p = 몽프.FindByid (p.getid (), 사람.수업); 통나무.정보 ("설립하다: " + 피); // 업데이트 몽프.updatefirst (query (where)"이름")).이다("조")), 업데이트("나이", 35), 사람.수업); p = 몽프.findone (query (where)"이름")).이다("조")), 사람.수업); 통나무.정보 ("업데이트 :" + 피); // 삭제 몽프.제거 (p); // 삭제가 작동하는지 확인하십시오 사람 = 몽프를 나열하십시오.findall (사람.수업); 통나무.정보 ("사람들의 수 = :" + 사람들.크기()); 몽프.DropCollection (사람.수업); >>

이것은 다음 로그 출력을 생성합니다 (Mongotemplate 자체의 디버그 메시지 포함)

디버그 apping.MongopersistentityIndexcreator : 80- 클래스 클래스 조직 분석.봄.예.색인 정보를위한 사람. 디버그 작업.데이터.Mongodb.핵심.mongotemplate : 632- dbobject 포함 필드 삽입 : [_class, age, name] 컬렉션 : 사람 정보 org.봄.예.MongoApp : 30- 인서트 : 사람 [ID = 4DDC6E784CE5B1EBA3CEAP5C, NAME = JOE, AGE = 34] 디버그 작업.데이터.Mongodb.핵심.mongotemplate : 1246- 쿼리를 사용하는 Findone : < "_id" : < "$oid" : "4ddc6e784ce5b1eba3ceaf5c">> DB에서.수집 : 데이터베이스.사람 정보 org.봄.예.MongoApp : 34- 발견 : 사람 [id = 4ddc6e784ce5b1eba3ceaf5c, name = joe, age = 34] 디버그 작업.데이터.Mongodb.핵심.Mongotemplate : 778- 쿼리를 사용한 업데이트 호출 : < "name" : "Joe">그리고 업데이트 : < "$set" : < "age" : 35>> 컬렉션 : 사람 디버그 작업.데이터.Mongodb.핵심.mongotemplate : 1246- 쿼리를 사용하는 Findone : < "name" : "Joe">DB에서.수집 : 데이터베이스.사람 정보 org.봄.예.MongoApp : 39- 업데이트 : 사람 [id = 4ddc6e784ce5b1eba3ceaf5c, name = joe, age = 35] 디버그 작업.데이터.Mongodb.핵심.Mongotemplate : 823- 쿼리를 사용하여 제거 : < "id" : "4ddc6e784ce5b1eba3ceaf5c">컬렉션 : 사람 정보 org.봄.예.Mongoapp : 46- 사람 수 = : 0 디버그 작업.데이터.Mongodb.핵심.Mongotemplate : 376- 삭제 된 컬렉션 [데이터베이스.사람]

데이터베이스에 저장된 문자열과 ObjectID 사이에 MongoconVerter를 사용하여 암시 적 변환이 있었고 속성 “ID”이름의 규칙을 인식했습니다.

이 예제는 Mongotemplate에서 저장, 업데이트 및 제거를 보여주고 복잡한 매핑 기능을 표시하지 않기위한 것입니다

예제에 사용 된 쿼리 stynax는 문서 쿼리 섹션에 자세히 설명되어 있습니다.

5.5.1 ‘_id’필드가 매핑 레이어에서 처리되는 방법

Mongodb는 모든 문서에 대한 ‘_id’필드가 있어야합니다. 하나를 제공하지 않으면 드라이버는 생성 된 값으로 ObjectID를 할당합니다. MongomappingConverter를 사용할 때 Java 클래스의 속성 이이 ‘_id’필드에 매핑되는 방법에 대한 특정 규칙이 있습니다.

다음은 ‘_id’문서 필드에 어떤 속성을 매핑 할 것인지에 대해 설명합니다

  • @id (org.SpringFramework.데이터.주석.id)는 ‘_id’필드에 매핑됩니다.
  • 주석이없는 속성 또는 필드이지만 이름이 지정된 ID가 ‘_id’필드에 매핑됩니다.

다음은 MONGOTEMPLATE의 기본값 인 MAPPINGMONGOCONVERTER를 사용할 때 _ID 문서 필드에 매핑 된 속성에서 어떤 유형 변환이 수행 될 것인지에 대해 설명합니다 .

  • Java 클래스에서 문자열로 선언 된 ID 속성 또는 필드는 스프링 변환기를 사용하여 가능한 경우 객체로 변환되고 저장됩니다 . 유효한 전환 규칙은 MongoDB Java 드라이버에 위임됩니다. ObjectID로 변환 할 수없는 경우 값은 데이터베이스의 문자열로 저장됩니다.
  • Java 클래스에서 BigInteger로 선언 된 ID 속성 또는 필드는 스프링 변환기를 사용하여 객체로 변환되고 저장됩니다 .

위에 지정된 필드 나 속성이 Java 클래스에 존재하지 않는 경우, 드라이버는 암시 적 ‘_id’파일이 생성되지만 Java 클래스의 속성이나 필드에 매핑되지는 않습니다.

쿼리 및 업데이트 MongotemPlate을 사용하여 변환기를 사용하여 문서를 저장하기위한 위의 규칙에 해당하는 쿼리의 변환 및 업데이트 객체를 처리 할 때 쿼리에 사용되는 필드 이름 및 유형이 도메인 클래스의 내용과 일치 할 수 있습니다.

5.5.2 유형 매핑

MongoDB 컬렉션은 다양한 유형의 인스턴스를 나타내는 문서를 포함 할 수 있으므로. 여기서 좋은 예는 클래스의 계층 구조를 저장하거나 유형 객체의 속성을 가진 클래스를 가지고 있다면 . 후자의 경우 해당 속성 내부에있는 값은 객체를 검색 할 때 올바르게 읽어야합니다. 따라서 실제 문서와 함께 유형 정보를 저장하는 메커니즘이 필요합니다.

이를 달성하기 위해 MongoconVerter는 기본 구현이므로 DefaultMongotypemapper와 함께 Mongotypemapper 추상화를 사용합니다. 기본 동작은 최상위 문서의 문서 내부에 _class 아래에 완전히 자격을 갖춘 클래스 이름을 저장하는 것입니다.

예 5.7. 유형 매핑

공공의 수업 견본 < Contact value; >공공의 추상적인 수업 연락하다 < … >공공의 수업 사람 확장 연락하다 < … >샘플 샘플 = 새로운 견본(); 견본.값 = 새로운 사람(); Mongotemplate.저장 (샘플); < "_수업" : "com.절정.견본", "값" : < "_수업" : "com.절정.사람" >>

보시다시피, 실제 루트 클래스 지속 시간 및 중첩 유형의 유형 정보는 복잡하고 서브 타입의 유형 정보를 저장합니다 . 따라서 지금 Mongotemplate를 사용하고 있다면.findall (물체.클래스, “샘플”) 저장된 문서가 샘플 인스턴스 여야한다는 것을 알 수 있습니다. 우리는 또한 가치 재산이 실제로 사람이어야한다는 것을 알 수 있습니다.

유형 매핑 사용자 정의

전체 Java 클래스 이름을 유형 정보로 쓰지 않고 일부 키를 사용하는 것을 원한다면 엔티티 클래스에서 @Typealias 주석을 사용할 수 있습니다. 매핑을 사용자 정의 해야하는 경우 더 많은 유형을 확인하십시오. 해당 인터페이스의 인스턴스는 DefaultMongotyPemapper에서 구성 할 수 있으며, 이는 MongoconVerter를 차례로 켜서 구성 할 수 있습니다 .

5.5.문서 저장 및 삽입을위한 3 가지 방법

Mongotemplate에는 객체를 저장하고 삽입하기위한 몇 가지 편리한 방법이 있습니다. 전환 프로세스에 대한보다 미세한 입금 제어를하려면 매핑 몽고 컨버터 (예 : 변환기 및 변환기)와 함께 스프링 컨버터를 등록 할 수 있습니다 .

인서트와 저장 작업의 차이점은 객체가 아직 존재하지 않으면 저장 작업이 삽입물을 수행한다는 것입니다.

저장 작업을 사용하는 간단한 사례는 Pojo를 저장하는 것입니다. 이 경우 컬렉션 이름은 클래스의 이름 (완전히 자격이없는)으로 결정됩니다. 특정 수집 이름으로 저장 작업을 호출 할 수도 있습니다. 객체를 저장하는 컬렉션은 매핑 메타 데이터를 사용하여 재정의 할 수 있습니다.

삽입 또는 저장시, ID 속성이 설정되지 않은 경우 데이터베이스에 의해 그 값이 자율적이라고 가정합니다. 따라서, 객체의 자율성이 클래스의 ID 속성/필드의 유형을 성공시키기 위해서 .

다음은 저장 작업을 사용하고 내용을 검색하는 기본 예입니다.

예 5.8. MongotemPlate을 사용하여 문서 삽입 및 검색

수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.기준.어디; 수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.기준.질문; … 사람 P = 새로운 사람("단발", 33); Mongotemplate.삽입 (p); 사람 qp = mongotemplate.findone (query (where)"나이")).이다(33)), 사람.수업);

사용 가능한 삽입/저장 작업은 아래에 나열되어 있습니다.

  • 무효의 구하다 (Object ObjectTosave) 객체를 기본 수집에 저장.
  • 무효의 구하다 (Object ObjectTosave, String CollectionName) 지정된 컬렉션에 객체를 저장.

유사한 삽입 작업 세트가 아래에 나열되어 있습니다

  • 무효의 끼워 넣다 (Object ObjectTosave) 기본 수집에 개체 삽입.
  • 무효의 끼워 넣다 (Object ObjectTosave, String CollectionName) 지정된 컬렉션에 개체 삽입.

내 문서를 저장 할 수있는 컬렉션?

문서에서 작동하는 데 사용되는 수집 이름을 관리하는 두 가지 방법이 있습니다. 사용되는 기본 수집 이름은 클래스 이름이 소문자 문자로 시작하도록 변경되었습니다. 그래서 com.시험.개인 수업은 “사람”컬렉션에 저장됩니다. @document 주석을 사용하여 다른 수집 이름을 제공하여이를 사용자 정의 할 수 있습니다. 선택한 MongotemPlate 메소드 호출의 마지막 매개 변수로 자신의 수집 이름을 제공하여 수집 이름을 대체 할 수도 있습니다.

개별 객체 삽입 또는 저장

MongoDB 드라이버는 한 번의 작업에 문서 모음을 삽입하는 것을 지원합니다. 이 기능을 지원하는 Mongooperations 인터페이스의 메소드는 아래에 나열되어 있습니다

  • 끼워 넣다 객체를 삽입하십시오. 동일한 ID가있는 기존 문서가 있으면 오류가 생성됩니다.
  • insertall 객체 모음을 첫 번째 매개 변수로 취합니다. 이 방법은 각 객체를 지정하고 위에 지정된 규칙에 따라 적절한 컬렉션에 삽입합니다.
  • 구하다 동일한 ID로 존재할 수있는 객체를 작성하는 객체 저장.

배치에 여러 객체를 삽입합니다

MongoDB 드라이버는 한 번의 작업에 문서 모음을 삽입하는 것을 지원합니다. 이 기능을 지원하는 Mongooperations 인터페이스의 메소드는 아래에 나열되어 있습니다

  • 끼워 넣다 첫 번째 인수로 컬렉션을 취하는 방법. 이것은 단일 배치에 객체 목록을 데이터베이스에 삽입합니다.

5.5.4 컬렉션의 문서 업데이트

업데이트의 경우 Mongooperation의 메소드 updateFirst를 사용하여 찾은 첫 번째 문서를 업데이트하도록 선택할 수 있습니다 . 다음은 한 번 $ 50를 추가하는 모든 저축 계좌의 업데이트 예입니다.$ inc 운영자를 사용하여 잔액에 00 보너스.

예 5.9. MongotemPlate을 사용하여 문서 업데이트

수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.기준.어디; 수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.질문; 수입 공전 org.SpringFramework.데이터.Mongodb.핵심.질문.업데이트; . Writeresult wr = mongotemplate.updatemulti (새로운 쿼리 (여기서)"계정.계정 유형")).IS (계정.유형.저금)), 새로운 업데이트().Inc (Inc)"계정.$.균형", 50.00), 계정.수업);

위에서 논의한 쿼리 외에도 업데이트 객체를 사용하여 업데이트 정의를 제공합니다. 업데이트 클래스에는 MongoDB에 사용 가능한 업데이트 수정 자와 일치하는 메소드가 있습니다.

보시다시피 대부분의 메소드는 업데이트 객체를 반환하여 API에 유창한 스타일을 제공합니다.

문서 업데이트를 실행하는 방법

  • UpdateFirst 쿼리 문서 기준과 일치하는 첫 번째 문서가 제공된 업데이트 된 문서와 업데이트됩니다.
  • Updatemulti 쿼리 문서 기준과 일치하는 모든 객체를 제공 한 업데이트 된 문서와 업데이트합니다.

Mongodb 및 Java 시작하기 -Crud Operations Tutorial

MongoDB Java 드라이버 로깅은 이제 인기있는 SLF4J API를 통해 활성화되어 POM에 로그백을 추가했습니다.XML 및 구성 파일 로그백.XML .

소개

자바 배지

Java Quick Start 시리즈의 첫 번째 블로그 게시물에서 Maven과 함께 Java 프로젝트를 설정하고 Java에서 Mongodb 명령을 실행하는 방법을 보여 드리겠습니다. 그런 다음 MongoDB Java 드라이버를 사용하여 생성, 읽기, 업데이트 및 삭제와 같은 가장 일반적인 작업을 탐색합니다 . 또한 이러한 각 작업에 대한 MongoDB Java 드라이버의 일부로 제공되는보다 강력한 옵션과 기능을 보여 드리겠습니다.

향후 블로그 게시물에서는 다음을 진행하고 작업 할 것입니다

멀티 문서 산 트랜잭션.

MongoDB Java 반응성 스트림 드라이버.

왜 Mongodb와 Java?

Java는이 블로그 게시물의 날짜에 IT 업계에서 가장 인기있는 언어이며 개발자는 MongoDB에 4 년 연속 가장 원하는 데이터베이스로 투표했습니다 . 이 일련의 블로그 게시물에서, 나는이 두 가지 위대한 기술이 얼마나 강력한지를 보여줄 것입니다.

전제 조건

따라 가려면 원하는 환경과 선택한 통합 개발 환경을 사용할 수 있습니다. 나는 Maven 3을 사용하겠습니다.6.2 및 Java OpenJDK 13이지만 모든 코드는 Java 버전 8 ~ 13과 호환되므로 선택한 JDK를 사용하고 POM에서 Java 버전을 업데이트하십시오.XML 파일 설정하려고합니다.

Mongodb 클러스터의 경우 Mongodb Atlas의 M0 Free Tier MongoDB 클러스터를 사용할 것입니다 . 아직 없다면 M0 클러스터 블로그 게시물로 시작한 내용을 확인하십시오.

오늘 MongoDB Atlas에서 무료 M0 클러스터를 받으십시오. 영원히 무료 이며이 블로그 시리즈의 예제와 함께 작동하는 데 사용할 수 있습니다.

뛰어 들어 Java와 Mongodb가 얼마나 잘 작동하는지 살펴 보겠습니다.

설정됩니다

우선, 새로운 Maven 프로젝트를 설정해야합니다. 이 시점에서 두 가지 옵션이 있습니다. 이 시리즈의 git 저장소를 복제하거나 Maven 프로젝트를 만들고 설정할 수 있습니다.

git 저장소 사용

git을 사용하기로 선택하면 모든 코드가 즉시 얻을 수 있습니다. 수동 설정을 읽는 것이 좋습니다.

다음 명령으로 원하는 경우 저장소를 복제 할 수 있습니다.

또는 저장소를 zip 파일로 다운로드 할 수 있습니다 .

수동으로 설정

좋아하는 IDE를 사용하여 새로운 Maven 프로젝트를 만들거나 Maven 프로젝트를 수동으로 만들 수 있습니다. 어느 쪽이든, 다음 폴더 아키텍처를 가져와야합니다

POM.XML 파일에는 다음 코드가 포함되어야합니다

모든 것이 올바르게 작동하는지 확인하려면 간단한 “Hello Mongodb를 만들고 실행할 수 있어야합니다!”프로그램. src/main/java/com/mongodb/quickstart에서 hellomongodb 만들기.Java 파일 :

그런 다음 IDE로 컴파일하고 실행하거나 루트 디렉토리의 명령 줄을 사용하십시오 (SRC 폴더가있는 경우)

결과는 다음과 같습니다

참고 : Guice의 불법적 인 반사 접근에 대한 경고가 보이면.자바, 무시하는 것이 안전합니다. Guice는 Maven에서 사용하며 업데이트가 필요합니다. 이 github 문제에서 그것에 대해 자세한 내용을 읽을 수 있습니다 . 이 경고는 Guice와 Maven의 향후 출시에서 사라질 것입니다.

Java와 연결

이제 Maven 프로젝트가 작동하고 의존성을 해결 했으므로 Java와 함께 Mongodb Atlas를 사용할 수 있습니다.

Quick Start Atlas 블로그 게시물에서 제안한대로 샘플 데이터 세트를 가져온 경우 작성하려는 Java 코드를 사용하면 샘플 데이터 세트에서 데이터베이스 목록을 볼 수 있습니다.

첫 번째 단계는 Mongodb Atlas 연결 문자열을 법칙에 전달하여 Mongoclient를 인스턴스화하는 것입니다.() 정적 메소드를 작성하십시오. 이것은 연결 문자열을 사용하여 MongoDB Atlas와의 연결을 설정합니다. 그런 다음이 클러스터의 데이터베이스 목록을 검색하여 MongoDB와의 연결을 테스트하기 위해 인쇄 할 수 있습니다.

src/main/java/com/mongodb에서 연결을 만듭니다.Java 파일 :

보시다시피, MongoDB 연결 문자열은 시스템 속성 , 그래서 우리는 이것을 설정해야합니다. MongoDB Atlas Connection String을 검색 한 후에는 MongoDB를 추가 할 수 있습니다.URI 시스템 속성에 대한 IDE. 예를 들어 Intellij와의 구성은 다음과 같습니다.

또는 명령 줄에서 maven을 사용하는 경우 루트 디렉토리에서 실행할 수있는 동등한 명령 줄은 다음과 같습니다

참고 : 껍질에서 놀라움을 피하기 위해 Mongodb Uri 주변의 이중 인용문을 잊지 마십시오.

표준 출력은 다음과 같습니다

작업을 삽입하십시오

설정됩니다

Java 섹션과의 연결에서 우리는 Hellomongodb 및 Connection 클래스를 만들었습니다 . 이제 우리는 Create Class에서 작업 할 것입니다.

MongoDB Atlas에서 무료 클러스터를 설정하지 않았다면 이제는 좋은 시간입니다. 클러스터를 만들기위한 지침을 얻으십시오 .

수집 및 데이터 모델 확인

샘플 데이터 세트에서 컬렉션 등급이 포함 된 데이터베이스 샘플 _training을 찾을 수 있습니다 . 이 컬렉션의 각 문서는 특정 수업에 대한 학생의 성적을 나타냅니다.

다음은 Mongo Shell에서 문서의 JSON 표현입니다 .

그리고 여기 같은 학생의 확장 된 JSON 표현이 있습니다. 원한다면 무료 GUI 도구 인 Mongodb Compass에서 검색 할 수 있습니다.

확장 JSON은 유형 정보 손실없이 BSON 문서의 인간 읽기 가능한 버전입니다. MongoDB Java 드라이버 문서에서 Java Driver 및 BSON에 대한 자세한 내용을 읽을 수 있습니다 .

보시다시피, MongoDB는 BSON 문서를 저장하고 각 키 값 쌍에 대해 BSON에는 키와 값이 유형과 함께 포함됩니다. 이것이 Mongodb가 Class_id가 실제로 이중이며 정수가 아니라는 것을 알고있는 방법입니다.

우리는이 컬렉션에 이미 10,000 명의 학생들 (0에서 9999까지의 학생)이 있으며 각각 10 개의 다른 수업을 들었 으며이 컬렉션에서 최대 100,000 개의 문서를 추가합니다. 새로운 학생 (Student_id 10,000)이 방금이 대학에 도착하여 첫 번째 수업에서 수많은 (무작위) 성적을 받았다고 가정 해 봅시다. Java와 Mongodb Java 드라이버를 사용 하여이 새로운 학생 문서를 삽입합시다.

이 대학에서 Class_id는 0에서 500까지 다양하므로 0에서 500 사이의 임의 값을 사용할 수 있습니다.

MongoDB Java 통합 : 12 단계

Python에서 Mongodb Crud 작업을 시작하십시오 : 3 단계 쉬운 단계 MongoDB 서브 스트링 (기판) 응집 : 단순화 된 101 MongoDB JavaScript (NODEJS) 커넥터 단순화 101

목차

이 페이지는 Mongodb와 Java로 시작하는 방법에 대한 포괄적 인 개요를 제공합니다. 이 게시물에서, 당신&rsquo;ll Java 응용 프로그램을 MongoDB 인스턴스에 연결하는 방법을 배웁니다. 그런 다음 MongoDB Java 드라이버를 사용하여 일반적인 MongoDB 작업을 수행합니다. 당신의 설정을 위해 함께 읽으십시오 Mongodb Java 오늘 통합!

목차

Mongodb 란 무엇입니까??

MongoDB는 광범위한 응용 프로그램이있는 오픈 소스 문서 데이터베이스입니다. 분석 데이터베이스, 트랜잭션 데이터베이스, 검색 지수 또는 데이터웨어 하우스로 사용할 수 있습니다. MongoDB에는 전체 인덱싱, 복제, JSON 유사 저장 및 비 구조화 쿼리 언어를 지원하는 유연한 스키마가 있습니다.

주요 MongoDB 개념은 다음과 같습니다

  • ID: id는 mongodb에서 고유 한 객체를 나타내는 데 사용되는 필드 이름입니다. 사용자가 명시 적으로 또는 MongoDB 서버에서 암시 적으로 생성 할 수 있습니다.
  • 수집: MongoDB 문서 그룹을 저장하는 버킷입니다. 계층 구조의 데이터베이스에 속합니다.
  • 데이터 베이스: 이것은 MongoDB 인스턴스에서 가장 최상위 수준의 데이터 구성입니다. 데이터베이스는 컬렉션을 저장하고 MongoDB 인스턴스에는 많은 데이터베이스가 포함될 수 있습니다.
  • 문서: MongoDB 컬렉션에 저장된 레코드는 문서라고합니다. 그들은 열쇠와 값을 포함합니다. 값은 문자열, 정수, 부울, 날짜 및 기타 임베디드 문서 일 수 있습니다.
  • 필드 : 이것은 문서의 키/값 쌍을 나타냅니다.

150 개 이상의 커넥터가 장착 된 Hevo의 신뢰할 수있는 안정적인 코드, 자동화 된 파이프 라인으로 데이터 복제 문제를 해결하십시오.

MongoDB의 주요 특징

Mongodb에는 널리 사용 가능하고 인기있는 몇 가지 특별한 기능이 있습니다. Mongodb의 최고의 기술적 기능을 살펴 보자

Adhoc 쿼리를 지원합니다

MongoDB가 눈에 띄게 만드는 가장 큰 이점 중 하나는 일반적으로 실시간으로 업데이트되는 데이터에 대한 임시 쿼리를 처리 할 때의 성능입니다. MongoDB는 필드 검색, 범위 검색 및 정규식 쿼리를 수행 할 수 있습니다.

인덱싱

인덱싱은 검색 속도 및 검색 쿼리의 성능 향상을위한 데이터베이스의 중요한 기능입니다. 인덱싱이 없으면 데이터베이스는 문서를 하나씩 스캔하여 비효율적 인 쿼리와 일치하는 문서를 선택해야합니다. 그러나 각 쿼리에 적절한 색인이 있으면 서버에서 사용자 요청을 신속하게 실행할 수 있습니다. MONGODB 인덱싱을 사용하면 모든 필드 또는 키를 사용하면 데이터 세트에 복잡한 액세스 패턴을 유지하는 문서에서 가능합니다.

스키마가없는 데이터베이스

클래식 관계형 데이터베이스는 스키마를 사용하여 테이블, 행보기, 인덱스 및 관계를 포함한 모든 기능 요소를 정의합니다. MongoDB에서는 하나의 컬렉션이 다른 문서를 유지합니다. 스키마가 없으므로 컬렉션에 수많은 문서가있을 수 있고 뚜렷한 키가 있으며이 키는 고유 할 수 있습니다. MongoDB와 마찬가지로 Schemaless 데이터베이스는 이러한 업 프론트 제약 조건을 가지고 있지 않기 때문에 더 유연합니다.

MongoDB에 대한 자세한 내용은 여기를 방문하십시오.

Java는 무엇입니까??

Java는 인기있는 프로그래밍 언어입니다&rsquo;s 서버 측 개발 및 모바일 앱 개발에 주로 사용. 그 디자인에서 Java는 객체 지향 언어로 모든 데이터와 방법이 클래스 및 객체로 표시됨을 의미합니다.

Java는 컴파일되거나 해석 될 수 있습니다. 그 이후로&rsquo;편집 된 언어입니다&rsquo;런타임에 매우 빠르며 디버그하기가 매우 쉽습니다.

일부 최고 Java 사용 사례에는 개발이 포함됩니다

  • 안드로이드 응용 프로그램
  • 데스크탑 GUI 응용 프로그램
  • 웹 응용 프로그램
  • 과학적 응용
  • 금융 부문 서버 측 응용 프로그램
  • 임베디드 시스템

Java의 주요 기능

다음 기능은 Java가 다른 프로그래밍 언어보다 우위에 있습니다

  • 객체 지향: Java 프로그래밍 언어는 모든 것을 객체로 취급합니다. 개별 엔티티를 객체로 취급하여 실제 시나리오를 코드로 쉽게 매핑 할 수 있습니다.
  • 플랫폼 독립: 프로그래밍 언어와 달리 C 및 C ++처럼 Java는 플랫폼 별 시스템에서 컴파일되지 않습니다. 인터넷을 통해 배포되고 모든 시스템에 설치된 JVM (Java Virtual Machine)에 의해 해석되는 플랫폼 독립 바이트 코드를 생성합니다.
  • 보안: Java 프로그래밍 언어의 보안 기능을 사용하면 변조 방지 및 바이러스가없는 시스템을 개발할 수 있습니다. 또한 공개 키 암호화 기반 인증 기술을 사용하여 코드와 데이터를 안전하게 유지합니다.
  • 가지고 다닐 수 있는: Java는 아키텍처 독립적 프로그래밍 언어입니다. 따라서 Java 프로그래밍 언어로 작성된 코드를 다른 프로세서에 쉽게 포장 할 수 있습니다.
  • 건장한: Java는 컴파일 타임 오류 확인 및 런타임 확인을 사용하여 오류가 발생하기 쉬운 인스턴스를 제거하기 위해 노력하는 프로그래밍 언어입니다.

Java 프로그래밍 언어에 대한 자세한 내용은 여기를 방문하십시오.

Hevo의 No-Code 데이터 파이프 라인으로 데이터 분석을 단순화하십시오

자동화 된 No-Code 데이터 파이프 라인 인 Hevo Data는 데이터베이스, SAAS 애플리케이션, 클라우드 스토리지, SDK, S 및 스트리밍 서비스와 같은 모든 데이터 소스에서 데이터를로드하고 ETL 프로세스를 단순화합니다. 100 개 이상의 데이터 소스를 지원합니다 Mongodb 데이터를 원하는 데이터웨어 하우스에로드하고 데이터를 풍부하게하며 한 줄의 코드를 작성하지 않고 분석 준비 상태로 변환합니다.

완전히 자동화 된 파이프 라인은 소스에서 대상으로 손실없이 실시간으로 전달할 수있는 데이터를 제공합니다. 결함 내전 및 확장 가능한 아키텍처는 데이터 손실이없는 안전하고 일관된 방식으로 데이터를 처리하고 다양한 형태의 데이터를 지원합니다. 제공된 솔루션은 일관성이 있으며 다른 비즈니스 인텔리전스 (BI) 도구와 함께 작동합니다.

왜 Hevo가 BES인지 확인하십시오티:

  • 안전한: Hevo는 데이터 손실이없는 안전하고 일관된 방식으로 데이터를 처리 할 수 ​​있도록 결함 내성 아키텍처를 가지고 있습니다.
  • 스키마 관리: Hevo는 스키마 관리의 지루한 작업을 제거하고 들어오는 데이터 스키마를 자동으로 감지하고 대상 스키마에 맵핑합니다.
  • 최소한의 학습: 간단하고 대화식 UI를 갖춘 Hevo는 신규 고객이 작업하고 운영을 수행하는 것이 매우 간단합니다.
  • Hevo는 확장을 위해 만들어졌습니다: 소스 수와 데이터 양이 증가함에 따라 Hevo는 수평으로 스케일링하여 대기 시간이 거의없이 분당 수백만 레코드를 처리합니다.
  • 증분 데이터로드: Hevo는 실시간으로 수정 된 데이터를 전송할 수 있습니다. 이를 통해 양쪽 끝에서 대역폭을 효율적으로 활용할 수 있습니다.
  • 실시간 지원: Hevo 팀은 24 시간 내내 채팅, 이메일 및 지원 통화를 통해 고객에게 탁월한 지원을 확장 할 수 있습니다.
  • 라이브 모니터링: Hevo는 데이터 흐름을 모니터링하고 데이터가 특정 시점에있는 위치를 확인할 수 있습니다.

MongoDB Java 통합을 설정하는 단계는 무엇입니까??

바라건대, 지금까지, 당신은 Mongodb와 Java에 대한 기본적인 이해와 그들이 왜&rsquo;응용 프로그램 개발에 사용됩니다. 이제하자&rsquo;S에서 다이빙을하고 설정할 수있는 단계를 살펴보십시오 Mongodb Java 완성:

  • 1 단계 : OpenJDK 패키지를 설치하십시오
  • 2 단계 : Java_Home 환경 변수를 설정하십시오
  • 3 단계 : MongoDB를 설치하십시오
  • 4 단계 : IDE 또는 편집기를 설치하십시오
  • 5 단계 : 새로운 Java 프로젝트 설정
  • 6 단계 : MongoDB Java 클라이언트 라이브러리를 설치하십시오
  • 7 단계 : MongoDB Java 클라이언트 라이브러리를 사용하십시오
  • 8 단계 : MongoDB 컬렉션을 만듭니다
  • 9 단계 : 문서 생성
  • 10 단계 : 문서 쿼리
  • 11 단계 : 문서 업데이트
  • 12 단계 : 문서 삭제

1 단계 : OpenJDK 패키지를 설치하십시오

Mongodb Java 설정을 따라 가려면&rsquo;LL 먼저 Java 개발을 위해 현지 기계를 준비해야합니다. 그렇게하려면 먼저 OpenJDK 8 (Open Java Development Kit) 패키지를 설치해야합니다.

1) 리눅스

만약 너라면&rsquo;Debian 또는 Ubuntu에서 명령 줄을 열고 다음 명령을 실행하십시오

$ sudo apt-get 설치 OpenJDK-8-JDK

Centos, Red Hat, Oracle, Fedora 및 기타 유사한 Linux 배포판의 경우 다음 명령을 사용합니다

$ su -c "yum install java -1.8.0-OPENJDK-DEVEL "

2) MACOS

만약 너라면&rsquo;RE MACOS에서 다음과 같은 명령을 사용합니다

% BREW 설치 OpenJDK@8

그런 다음 Java 래퍼가 찾을 수 있도록 기호 링크를 만듭니다

% sudo ln -sfn/usr/local/opt/openjdk@8/libexec/openjdk.jdk/library/java/javavirtualmachines/openjdk-8.JDK 

3) 창

  • 이 링크에서 MSI 기반 설치 프로그램을 다운로드하십시오.
  • zip 파일을 폴더로 추출하십시오.
  • Windows 설치 프로그램의 경우 OpenJDK 8을 실행하십시오.
  • 온 스크린 프롬프트를 따라 설치하십시오.

2 단계 : Java_Home 환경 변수를 설정하십시오

JDK가 설치되면 MongoDB Java 통합을 진행하려면 Java 환경을 설치해야합니다.

1) 리눅스

  1. 터미널을 열고 유형 :

sudo nano /etc /profile

  1. 그런 다음 파일 끝으로 이동하여 다음을 입력하십시오

내보내기 java_home =/usr/lib/jvm/java-8-openjdk-amd64/bin/java 내보내기 경로 = $ java_home/bin : $ path

  1. 파일을 저장하고 종료합니다 (Ctrl+O, Ctrl+x)).

2) MACOS

  1. 터미널을 열고 유형 :

EMACS .프로필

  1. 그런 다음 파일 끝으로 이동하여 다음을 입력하십시오

java_home =/library/java/home 내보내기 java_home;

  1. 저장 및 종료 (Ctrl-X, Ctrl-S; Ctrl-X, Ctrl-C)).

3) 창

Windows 시스템에서 환경 변수를 설정하려면 관리자 권한으로 명령 프롬프트를 열고 다음 명령을 실행하십시오

setx -m java_home "c : progra ~ 1javajdk1.8.0_XX "

다음으로, 명령 프롬프트를 다시 시작하여 환경 변수를 다시로드하십시오. 경로가 추가되었는지 확인하려면 다음 명령을 실행하십시오

echo %java_home %

3 단계 : MongoDB를 설치하십시오

MongoDB Java 통합의 Java 부분을 완료하면 MongoDB 및 그 도구를 설치할 시간입니다.

1) 리눅스

  1. 터미널을 열고 다음 명령을 발행하여 패키지 관리 시스템에서 MongoDB 공개 키를 가져 오기 위해 다음 명령을 내립니다

wget -qo -https : // www.Mongodb.org/static/pgp/server-5.0.ASC | sudo apt-key add -

  1. 다음으로 다음 명령을 발행하여 목록 파일을 만듭니다

echo "deb [arch = amd64, arm64] https : // repo.Mongodb.org/apt/ubuntu focal/mongodb-org/5.0 Multiverse "| sudo tee/etc/apt/sources.목록.d/mongodb-org-5.0.목록

  1. 패키지 데이터베이스를 새로 고치십시오.

Sudo apt-get 업데이트

  1. MongoDB를 설치하려면 다음 명령을 실행하십시오

sudo apt-get install -y mongodb-org

  1. MongoDB 시작 :

sudo systemctl 시작 mongod

  1. MongoDB가 실행 중인지 확인하십시오

sudo systemctl 상태 mongod

MongoDB는 항구에서 실행되어야합니다 27017.

위의 지침은 우분투 20에서 테스트되었다.0. 다음 링크에서 다른 Linux 배포에 대한 설치 지침을 얻을 수 있습니다.

2) MACOS

  1. MongoDB 용 Homebrew Formula를 다운로드하려면 다음 명령을 발행하십시오

양조 탭 Mongodb/Brew

  1. 다음 명령을 사용하여 MongoDB를 설치하십시오

양조 MongoDB-Community@5를 설치하십시오.0

  1. 인텔 프로세서를 실행하는 MACOS 컴퓨터의 경우 다음 명령을 사용하여 MongoDB를 시작하십시오

mongod -config/usr/local/etc/mongod.conf- 포크

  1. M1 프로세서를 실행하는 MACOS 컴퓨터의 경우 다음 명령을 사용하십시오

Mongod-- Config/Opt/Homebrew/etc/mongod.conf- 포크

3) 창

  1. 이 링크에서 MongoDB MSI 기반 설치 프로그램을 다운로드하십시오.
  1. 두 번 클릭하여 설치 프로그램을 실행하십시오 .MSI 파일.
  1. 온 스크린 프롬프트를 따라 설치하십시오.

4 단계 : IDE 또는 편집기를 설치하십시오

이 블로그에 제공된 예제를 실행하려면 IDE (Integrated Development Environment)를 사용하는 것이 좋습니다. Java 프로젝트를 구축하고 실행할 때 Maven 또는 Gradle을 구성하는 것이 훨씬 더 편리하기 때문입니다.

당신 아래&rsquo;ll Java 앱을 개발하는 데 사용되는 인기있는 편집자 목록을 찾아서 Mongodb Java 완성:

  • Github에 의한 Atom
  • JetBrains의 Intellij 아이디어
  • Microsoft의 Visual Studio Code
  • Eclipse Foundation의 Eclipse

이 IDE는 구문 강조 표시, 코드 완료, 완전히 통합 된 디버깅 기능 등과 같은 유용한 기능을 제공합니다.

5 단계 : 새로운 Java 프로젝트 설정

좋아하는 IDE를 사용하여 새로운 Maven 또는 Gradle 프로젝트를 만드십시오. 만약 너라면&rsquo;Maven을 사용하면 다음 폴더 구조를 가져와야합니다

Java-Quick-Start/   Pom.XML    SRC   Main    java   com  com  Mongodb â QuickStart 

Gradle을 사용하는 경우 다음 폴더 구조가 있어야합니다

 빌드.Gradle    Src   Main    java    Â

6 단계 : Java 용 MongoDB 클라이언트 라이브러리 설치

Java 용 MongoDB 클라이언트 라이브러리를 사용하면 Java 응용 프로그램에서 MongoDB 인스턴스에 연결하고 통신 할 수 있습니다.

Maven을 사용하는 경우 MongoDB Java 클라이언트 라이브러리를 귀하의 종속성 목록에 추가하십시오 POM.XML 파일.

  org.Mongodb mongodb-driver-sync 4.4.1   

당신의 POM.XML 파일은 이제 다음과 같습니다

  4.0.0 com.Mongodb Java-Quick 시작 1.0-snapshot 8 8 UTF-8 4.4.1 삼.10.0   org.Mongodb mongodb-driver-sync $    org.아파치.Maven.플러그인 Maven-Compiler-Plugin $ $ $     

만약 너라면&rsquo;Gradle을 사용하여 다음 코드 스 니펫을 추가하십시오 짓다.Gradle MongoDB Java 통합의 종속성 목록 :

의존성

당신의 짓다.Gradle 파일은 다음 파일과 비슷해야합니다

플러그인 < id 'base' >수입 조직.Gradle.분포.Download Gradle 버전 = '0.1 '종속성 < compile 'org.mongodb:mongodb-driver-sync:4.4.1' >작업.register ( 'downloadgradle', downloadgradle) < description = 'Downloads the Gradle distribution with a given version.' gradleVersion = '4.6' >작업.register ( 'CreateCustomgradleDlytribution', Zip) < description = 'Builds custom Gradle distribution and bundles initialization scripts.' dependsOn downloadGradle def projectVersion = project.version archiveFileName = downloadGradle.gradleVersion.map < gradleVersion ->"MyCompany-gradle- $-$-빈.Zip "> Ziptree (Download Gradle.( 'src/init.디') < into "$/init.d" > > 

7 단계 : MongoDB Java 클라이언트 라이브러리 사용

MongoDB Java 클라이언트 라이브러리를 사용하려면 프로젝트의 기본 패키지 디렉토리 내부에 응용 프로그램이 포함 된 파일을 만듭니다. 이름을 지정할 수 있습니다 앱.자바.

라이브러리를 초기화하기 위해 다음 가져 오기 명세서를 추가하십시오

정적 com을 가져옵니다.Mongodb.고객.모델.필터.식; 수입 조직.BSON.문서; com을 가져옵니다.Mongodb.고객.거상서; com을 가져옵니다.Mongodb.고객.학술문; com을 가져옵니다.Mongodb.고객.Mongocollection; com을 가져옵니다.Mongodb.고객.몽고 다타베이스;

8 단계 : MongoDB 컬렉션을 만듭니다

그와 함께, 그것은&rsquo;이제 MongoDB Java 통합이 데이터베이스와 상호 작용하는 시간. 허락하다&rsquo;첫 번째는 컬렉션을 만들어 시작합니다. 대상 데이터베이스를 사용하여 MongoDB 컬렉션을 만들 수 있습니다 getDatabase () 방법을 호출합니다 CreateCollection () 방법의 방법 com.Mongodb.고객.몽고 다타베이스 상호 작용. 이 메소드는 컬렉션의 이름으로 문자 그대로 문자열 값을 허용합니다. 데이터베이스가 존재하지 않으면 MongoDB는 암시 적으로 생성합니다.

다음 코드 스 니펫은 MongoDB 데이터베이스에서 컬렉션을 만듭니다

Java 수입.유도.배열; 수입 조직.BSON.문서; 수입 조직.BSON.유형.대상; com을 가져옵니다.Mongodb.MongoException; com을 가져옵니다.Mongodb.고객.거상서; com을 가져옵니다.Mongodb.고객.학술문; com을 가져옵니다.Mongodb.고객.Mongocollection; com을 가져옵니다.Mongodb.고객.몽고 다타베이스; com을 가져옵니다.Mongodb.고객.결과.insertoneresult; 공개 수업 createcollection < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; // Create a MongoDB Client MongoClient mongoClient = MongoClients.create(uri)); // Create a MongoDB database MongoDatabase database = mongoClient.getDatabase("usersDB"); // Create a MongoDB Collection MongoCollectioncollection = database.createCollection("users"); System.out.println("Collection Created Successfully!"); > >

9 단계 : 문서 생성

다음 스 니펫은 다음을 사용합니다 insertone () 방법 문서를 사용자에게 삽입하는 방법&rsquo;이전 단계에서 만든 컬렉션. 데이터베이스 또는 수집이 존재하지 않으면 MongoDB는 두 가지를 만듭니다.

Java 수입.유도.배열; 수입 조직.BSON.문서; 수입 조직.BSON.유형.대상; com을 가져옵니다.Mongodb.MongoException; com을 가져옵니다.Mongodb.고객.거상서; com을 가져옵니다.Mongodb.고객.학술문; com을 가져옵니다.Mongodb.고객.Mongocollection; com을 가져옵니다.Mongodb.고객.몽고 다타베이스; com을 가져옵니다.Mongodb.고객.결과.insertoneresult; 공개 클래스 삽입 < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); try < InsertOneResult result = collection.insertOne(new Document() .append("_id", new ObjectId()) .append("username", "vitali@30") .append("phonenumber", 2501345876) .append("email", "[email protected]) ); System.out.println("Success! Inserted document id: " + result.getInsertedId()); >CATCH (MongoException me) < System.err.println("Unable to insert due to an error: " + me); >>>> 

호출하여 한 번에 여러 문서를 컬렉션에 삽입 할 수도 있습니다 insertmany () 방법. 여러 문서를 삽입하려면 목록에 추가하고 해당 목록을 배열로 전달해야합니다. 다음 코드 스 니펫은 사용 방법을 보여줍니다 insertmany () 이를 달성하는 방법.

Java 수입.유도.배열; Java 수입.유도.목록; 수입 조직.BSON.문서; com을 가져옵니다.Mongodb.MongoException; com을 가져옵니다.Mongodb.고객.거상서; com을 가져옵니다.Mongodb.고객.학술문; com을 가져옵니다.Mongodb.고객.Mongocollection; com을 가져옵니다.Mongodb.고객.몽고 다타베이스; com을 가져옵니다.Mongodb.고객.결과.insertmanyresult; 공개 클래스 insertmany < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); List userList = Arrays.asList( new Document().append("username", "owen hart"), new Document().append("username", "jack grealish")); try < InsertManyResult result = collection.insertMany(userList); System.out.println("Inserted document ids: " + result.getInsertedIds()); >CATCH (MongoException me) < System.err.println("Unable to insert due to an error: " + me); >>>> 

10 단계 : 문서 쿼리

MongoDB Java 통합으로 작업하면 컬렉션에서 문서를 검색하여 찾다() 방법. 이 메소드는 컬렉션의 모든 문서를 포함하는 반복 가능한 객체를 반환합니다

com을 가져옵니다.Mongodb.고객.찾을 수 있습니다. com을 가져옵니다.Mongodb.고객.Mongocollection; com을 가져옵니다.Mongodb.고객.몽고 다타베이스; Java 수입.유도.반복자; 수입 조직.BSON.문서; com을 가져옵니다.Mongodb.거상서; 공공 수업 찾기 < public static void main( String[] args ) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); FindIterable iterDoc = collection.find(); Iterator it = iterDoc.iterator(); while (it.hasNext()) < System.out.println(doc.it.next()); >>>> 

11 단계 : 문서 업데이트

MongoDB 데이터베이스의 업데이트는 다음을 사용하여 수행 할 수 있습니다 UpdateOne () 방법의 방법 업데이트 수업. 다음 예에서는 전화 번호의 값을 업데이트하고 사용자 이름과 일치하는 문서에 주소를 추가하게됩니다 &ldquo;vitali@30&rdquo;.

수입 조직.BSON.문서; 수입 조직.BSON.전환.BSON; com을 가져옵니다.Mongodb.MongoException; com을 가져옵니다.Mongodb.고객.거상서; com을 가져옵니다.Mongodb.고객.학술문; com을 가져옵니다.Mongodb.고객.Mongocollection; com을 가져옵니다.Mongodb.고객.몽고 다타베이스; com을 가져옵니다.Mongodb.고객.모델.updateoptions; com을 가져옵니다.Mongodb.고객.모델.업데이트; com을 가져옵니다.Mongodb.고객.결과.Updateresult; 공개 클래스 업데이트 < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Document query = new Document().append("username", "vitali@30"); Bson updates = Updates.combine( Updates.set("phonenumber", 010154257), Updates.addToSet("address", "666, 5th Avenue, NYC")); UpdateOptions options = new UpdateOptions().upsert(true); try < UpdateResult result = collection.updateOne(query, updates, options); System.out.println("Modified document count: " + result.getModifiedCount()); System.out.println("Upserted id: " + result.getUpsertedId()); // only contains a value when an upsert is performed >CATCH (MongoException me) < System.err.println("Unable to update due to an error: " + me); >>>> 

12 단계 : 문서 삭제

MongodB Java 통합이 설정되면 deleteone () 방법. 이 메소드는 삭제하려는 문서와 일치하는 쿼리 필터를 허용합니다.

다음 코드 스 니펫은 식 () 필터 사용자 이름으로 특정 사용자를 식별합니다 &ldquo;vitali@30&rdquo; MongoDB Java 통합에서 :

정적 com을 가져옵니다.Mongodb.고객.모델.필터.식; 수입 조직.BSON.문서; 수입 조직.BSON.전환.BSON; com을 가져옵니다.Mongodb.MongoException; com을 가져옵니다.Mongodb.고객.거상서; com을 가져옵니다.Mongodb.고객.학술문; com을 가져옵니다.Mongodb.고객.Mongocollection; com을 가져옵니다.Mongodb.고객.몽고 다타베이스; com을 가져옵니다.Mongodb.고객.결과.deleteresult; 공개 수업 deleteone < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Bson query = eq("username", "vitali@30"); try < DeleteResult result = collection.deleteOne(query); System.out.println("Deleted document count: " + result.getDeletedCount()); >CATCH (MongoException me) < System.err.println("Unable to delete due to an error: " + me); >>>> 

저것&rsquo;앉다! 이제 직접 설정할 수 있습니다 Mongodb Java 완성.

결론

이 기사는 주요 기능과 함께 MongoDB 및 Java 프로그래밍 언어를 소개했습니다. 이 안내서를 성공적으로 완료 한 경우 설정 방법에 대한 좋은 아이디어가 있어야합니다 Mongodb Java 완성. PC 또는 서버에서 MongoDB 및 Java 개발 환경을 설정하는 데 필요한 단계를 다루었습니다. 또한 Java 드라이버를 사용하여 MongoDB 인스턴스에 연결하는 방법도 다루었습니다. 마지막으로 간단한 Mongodb Java Crud 작업을 작성하는 방법의 예를 보았습니다.

MongoDB는 비즈니스 데이터를 저장하기위한 훌륭한 도구입니다. 그러나 때로는 추가 분석을 위해이 데이터를 데이터웨어 하우스로 전송해야합니다. 이 프로세스에 대한 사내 솔루션 구축은 비싸고 시간이 많이 걸리는 작업 일 수 있습니다. 반면에 HEVO 데이터는 데이터 전송 프로세스를 자동화 할 수있는 코드 데이터 파이프 라인을 제공하므로 분석, 고객 관리 등과 같은 비즈니스의 다른 측면에 집중할 수 있습니다. 이 플랫폼은 100 개 이상의 소스에서 데이터를 전송할 수 있습니다 Mongodb Snowflake, Google BigQuery, Amazon Redshift 등과 같은 클라우드 기반 데이터웨어 하우스. 그것은 당신에게 번거롭지 않은 경험을 제공하고 당신의 직장 생활을 훨씬 더 쉽게 만듭니다.

스핀을 위해 Hevo를 가져 가고 싶다? 14 일 무료 평가판에 가입하고 기능이 풍부한 Hevo Suite 직접 경험.

당신의 견해를 공유하십시오 Mongodb Java 주석 섹션의 통합!

Java MongoDB 거래 : 생성, 관리 및 워크 플로우 단순화 | 101 가이드

데이터베이스 처리 및 데이터에서 여러 작업을 수행하는 것은 어려울 수 있습니다. 수집 된 데이터의 관리 및 작업 문제를 해결하기 위해 데이터베이스 관리 시스템이 도입되었습니다. 가장 인기있는 데이터베이스 중 하나는 MongoDB입니다. MongoDB는 가장 유연한 데이터베이스 중 하나이며 Java로 실행하면 더 빠르고 쉬워집니다.

목차

이 기사에서는 Java MongoDB 거래에 대해 배우게됩니다. 또한 MongoDB 거래를 통해 생성, 관리 및 작업하는 방법에 대해 논의 할 것입니다.

목차

  1. 전제 조건
  2. Mongodb 란 무엇입니까??
  3. Java로 Mongodb를 실행하는 방법?
  4. MongoDB 거래는 무엇입니까??
  5. Java MongoDB 거래의 생성
  6. Java MongoDB 거래 관리
  7. Java MongoDB 거래의 워크 플로우
  8. 결론

전제 조건

데이터베이스에 대한 기본 이해.

Mongodb 란 무엇입니까??

MongoDB는 SQL 데이터베이스와 근본적으로 다른 NOSQL 데이터베이스입니다. MongoDB. SQL 데이터베이스는 관련 데이터를 테이블에 저장하는 반면 MongoDB는 관련이없는 데이터를 처리합니다.

MongoDB는 단일 또는 여러 문서에서 산 (원자, 일관성, 격리 및 내구성) 거래를 지원합니다. 이러한 거래의 산성 특성은 복잡한 트랜잭션 운영이 안전하고 신뢰할 수 있도록하여 데이터 유효성을 보장합니다. Mongodb는 Mongodb 4에 여러 문서, 컬렉션 및 데이터베이스 산 거래를 소개했습니다.0 버전.

MongoDB는 표준 운영 체제, Windows, Linux, MacOS 및 클라우드에서 실행됩니다. 운영 체제에서 실행되는 Mongodb 에디션은 Mongodb Community Server이며 클라우드의 MongoDB 설치를 Mongodb Atlas라고합니다.

Java로 Mongodb를 실행하는 방법?

시스템에 Java를 설치하고 선호하는 통합 개발 환경 (IDE) 준비. Java와 Mongodb를 설정하려면 먼저 Mongodb Java 드라이버를 가져와야합니다. MongoDB 설치의 리소스는 Gradle 또는 Maven의 두 IDE에 의해 수거됩니다. MongoDB Java 드라이버는 동기 및 비동기 상호 작용을 모두 제공합니다.

MongoDB Java 드라이버를 얻는 단계

  1. 이 웹 사이트에서 MongoDB 드라이버의 적절한 버전을 설치하십시오. 그런 다음 메뉴 아이콘에서 제품으로 이동하십시오. 찾아보세요 &lsquo;데이터 직접&rsquo; 옵션을 클릭하십시오.

MongoDB Java 드라이버를 얻는 단계

  1. 당신은 당신이 찾을 수있는 다른 웹 페이지로 리디렉션됩니다 &lsquo;데이터 연결&rsquo; 개요 패널의 옵션은 JDBC가 표시됩니다. 클릭하십시오.

MongoDB Java 드라이버를 얻는 단계

  1. 다른 페이지가 열립니다. 목록에서 MongoDB를 검색하고 더 이동하려면 클릭하십시오.

MongoDB Java 드라이버를 얻는 단계

  1. 다운로드 옵션이 표시되는 새 페이지가 나타납니다. 클릭하면 두 가지 옵션이 있습니다. Windows 및 Linux. OS 시스템에 따라 다운로드하려면 클릭하십시오.

MongoDB Java 드라이버를 얻는 단계

  1. 다운로드를 위해 양식을 작성하고 다운로드를 클릭해야합니다.
  2. 다운로드 후 다운로드 한 파일을 추출하십시오.
  3. 추출 된 파일을 열어 설치를 시작하십시오. 클릭 &lsquo;다음&rsquo; 계속하려면.
  4. 모든 이용 약관을 수락 한 다음 다음을 클릭하여 앞으로 이동하십시오.
  5. 참고 : 다가오는 두 창에서 아무것도 바꾸지 마십시오. 계속하려면 다음을 클릭하십시오.

MongoDB Java 드라이버를 얻는 단계

  1. 마지막으로 설치 옵션에 도달합니다. 클릭하면 설치가 시작됩니다.
  2. 설치 프로세스가 완료 될 때까지 기다립니다.

MongoDB Java 드라이버를 얻는 단계

  1. 설치가 완료되면 완료를 클릭하여 설치를 완료하십시오.
  2. C 드라이브를 열고 아래 경로를 따르십시오. JDBC 폴더를 찾으면 설치가 성공적입니다.

Hevo와 데이터 통합을 쉽게 확장하십시오&rsquo;s 결함 내전적 코드 데이터 파이프 라인 없음

비즈니스가 데이터를 수집 할 수있는 능력으로 인해 데이터 팀은 데이터 중심 의사 결정을 연료하는 데 중요한 역할을합니다. 그러나 그들은 창고에 흩어져있는 데이터를 통합하여 진실의 단일 원천을 구축하는 데 어려움을 겪고 있습니다. 파이프 라인, 데이터 품질 문제, 버그 및 오류, 데이터 흐름에 대한 제어 및 가시성 부족, 데이터 통합이 악몽으로 만듭니다.

1000 개 이상의 데이터 팀은 Hevo에 의존합니다&rsquo;S 데이터 파이프 라인 플랫폼 150 개 이상의 소스에서 데이터를 통합하여 몇 분 안에. SAAS 앱, 데이터베이스, 파일 스토리지 및 스트리밍 소스로 다양한 소스의 수십억 개의 데이터 이벤트를 HEVO와 거의 실시간으로 복제 할 수 있습니다&rsquo;S 결함 내성 아키텍처. 무엇&rsquo;s 더-Hevo는 파이프 라인 모니터링, 자동 스키마 관리 및 사용자 정의 수집/로드 일정을위한 직관적 인 대시 보드를 사용하여 데이터 팀의 손에 완전히 제어됩니다.

이것은 투명한 가격과 24 × 7 지원과 결합하여 검토 사이트에서 가장 특별한 데이터 파이프 라인 소프트웨어가됩니다.

데이터 파이프 라인을 관리하는 더 나은 방법을 경험하기 위해 14 일 무료 평가판을 받으십시오.

MongoDB 거래는 무엇입니까??

MongoDB의 거래는 여러 문서에서 하나 이상의 작업을 수행하는 논리적 프로세스 그룹입니다. 이 트랜잭션은 여러 문을 그룹화하고 격리하여 단일 작업으로 처리하는 방법을 제공합니다.

많은 명령을 개별적으로 실행하는 대신 트랜잭션을 사용하여 묶어 다른 맥락에서 명령을 실행할 수 있습니다.

트랜잭션의 이러한 작업은 MongoDB 데이터베이스와 함께 수행 된 다중 읽기 및 쓰기 작업입니다. 트랜잭션은 작업 세트의 무결성을 유지하고 최종 사용자에게 강력한 데이터 일관성을 제공합니다.

MongoDB의 거래에는 산성 특성이 있습니다. 이러한 속성은 복잡한 작업이 안전하고 신뢰할 수 있도록합니다. MongoDB는 다중 문서 및 분산 멀티 문서를 지원합니다.

Java MongoDB 거래의 생성

트랜잭션은 큰 클러스터의 일부로 실행되는 데이터베이스에서만 수행 할 수 있습니다. 이 클러스터는 샤드 데이터베이스 클러스터 또는 복제 세트 일 수 있습니다. 일반적으로 MongoDB 트랜잭션은 API 방법을 통해 외부 응용 프로그램에서 작성 및 실행됩니다. 여기, 우리&rsquo;ll MongoDB 쉘을 사용하여 트랜잭션을 만듭니다.

메모: 초기 startTransaction () 메소드 후에 트랜잭션 세션이 60 초 이상 실행되면 조작이 자동으로 중단됩니다.

다음은 거래 세션을 처음부터 끝까지 개념화하는 단계입니다.

DB.저자.찾다() [ < _id: ObjectId("620397dd4b871fc65c193106"), first_name: 'James', last_name: 'Joyce', title: 'Ulysses' >, < _id: ObjectId("620398016ed0bb9e23785973"), first_name: 'William', last_name: 'Gibson', title: 'Neuromancer' >, < _id: ObjectId("6203981d6ed0bb9e23785974"), first_name: 'George', last_name: 'Orwell', title: 'Homage to Catalonia' >, < _id: ObjectId("620398516ed0bb9e23785975"), first_name: 'James', last_name: 'Baldwin', title: 'The Fire Next Time' >]] 

API와 마찬가지로 코드를 사용하여 트랜잭션 세션을 만듭니다

var 세션 = DB.getMongo ().STARKESSESS ()

다음 단계는 startTransaction () 메서드를 호출하여 트랜잭션을 시작하는 것입니다. 아래 명령을 사용하십시오

세션.startTransaction ( < "readConcern": < "level": "snapshot" >, "WriteConcern": < "w": "majority >>)) 

startTransaction () 메소드에 대한 두 가지 옵션이 있습니다 : 관심을 읽고 우려 사항 작성.

컬렉션 및 데이터베이스 수준에서 거래 내부에서 읽기 문제 세트는 무시됩니다. 따라서 startTransaction ()에서 트랜잭션 레벨 읽기 문제를 설정해야합니다. 그러나 Read Concern Default는 트랜잭션에 대한 세션 수준 읽기 문제로 설정됩니다.

트랜잭션 레벨 및 세션 수준 읽기 문제가 설정되지 않으면 클라이언트 레벨의 읽기 문제가 자동으로 설정됩니다. 클라이언트 수준의 읽기 문제는 다음과 같습니다 &lsquo;현지의&rsquo; 1 차에 대한 읽기.

쓰기 문제는 쓰기 작업을 저지르는 데 사용됩니다. 트랜잭션 내부의 쓰기 작업은 쓰기 문제를 지정하여 암시 적으로 발행해야합니다. 그런 다음 트랜잭션 수준 쓰기 문제를 사용하여 쓰기 작업이 커밋됩니다.

startTransaction ()에서 트랜잭션 레벨 쓰기 문제를 설정할 수 있습니다. 트랜잭션 레벨 쓰기 문제가 설정되지 않으면 커밋에 대한 세션 수준 쓰기 문제에 대한 기본값. 트랜잭션 수준 및 세션 수준의 쓰기 문제가 모두 설정되지 않으면 거래 수준의 쓰기 문제는 자동으로 클라이언트 수준의 쓰기 문제로 이동합니다.

Java MongoDB 거래 관리

모든 거래 관리는 엄청나게 작동 할 수 있지만 거래 관리를 관리하는 몇 가지 방법은 다음과 같습니다. Java Spring Data 및 Java Mongo 드라이버를 사용하여 트랜잭션 지원을 추가 할 수 있습니다. 드라이버 API가 다음을 수행합니다

시도 (clientsession session = client.startsession ()) < session.startTransaction(); try < collection.insertOne(session, documentOne); collection.insertOne(session, documentTwo); session.commitTransaction(); >캐치 (예외 E) < session.abortTransaction(); >> 

클라이언트에서 얻은 클라이언트 세션.STARKENTESS ()는 더 이상 필요하지 않은 경우 수명이 짧고 한 번에 출시되어야합니다. 따라서 close () 명령을 포함하도록하십시오.

위의 스 니펫에는 각 명령 줄의 세션 (LSID)이 포함되어 있습니다. &lsquo;startTransaction&rsquo; 거래를 나타내는 첫 번째 명령으로 전송됩니다. 완료되면 거래는 &lsquo;커밋 변환.&rsquo;

MongoDB의 이전 버전은 트랜잭션을 지원하지 않았으므로 필수 부분은 ApplicationContext에서 MongotransactionManager를 구성하는 것입니다. 트랜잭션 관리자는 주석 기반 트랜잭션 지원을위한 진입 점입니다. 구성의 경우 아래 코드를 사용하십시오

@Configuration 클래스 구성은 AbstractMongoconFiguration을 확장합니다 < @Bean MongoTransactionManager transactionManager(MongoDbFactory dbFactory) < return new MongoTransactionManager(dbFactory); >> @Service Class DocumentService < private final MongoOperations operations; DocumentService(MongoOperations operations) < this.operations = operations; >@transactional void insertDocuments () < operations.insert(documentOne); operations.insert(documentTwo); >> 

저것&rsquo;앉다. Java MongoDB 거래를 관리하는 데별로 많지 않으므로 조사 할 간단한 단계가 몇 가지 있습니다.

Java MongoDB 거래의 워크 플로우

트랜잭션 사용의 첫 단계에서는 운전자를 통해 MongoDB 세션을 시작해야합니다. 이 기사는 MongoDB Java 드라이버와의 MongoDB 세션을 따릅니다. 그런 다음 해당 세션을 사용하여 데이터베이스 작업 그룹을 실행하십시오. 여러 문서, 컬렉션 및 파편에서 CRUD (작성, 읽기, 업데이트 및 삭제) 작업을 실행할 수 있습니다.

Mongodb&rsquo;S 트랜잭션은 단일 샤드의 맥락에서도 단일 쓰기 노드 기원이 있습니다. 트랜잭션 경로를 위해 스토리지 엔진 및 복제 프로토콜이 대체됩니다. 다음은 MongoDB 클라이언트 2 명을 가진 전자 상거래 앱을 나타내는 그림입니다.

여기서 클라이언트 1은 트랜잭션을 수행하고 클라이언트 2는 클라이언트가 호출 한 트랜잭션에서 업데이트 된 레코드를 읽습니다. 클라이언트 1은 주문 수집에 새 주문을 삽입하고 주문한 품목의 주식을 업데이트합니다 (주문이 성공적으로 배송되었다고 가정). 이제 높은 데이터 내구성에 적합한 유일한 쓰기 문제는 대다수입니다. 대다수는 대부분의 복제본을 의미합니다.이자형., 복제본의 대다.

트랜잭션은 복제를 사용하여 1 ~ 2 개의 이차가 기본에서 업데이트를 가져올 때까지 차단됩니다. 이 과정은 MongoDB를 만듭니다&rsquo;S 단일 샤드 트랜잭션은 다른 트랜잭션 NOSQL보다 약간 느리게 작성됩니다.

결론

우리는 Java와 거래에서 Mongodb를 사용하여 걸었습니다&rsquo;S 생성, 관리 및 워크 플로. 데이터베이스에서 Java MongoDB 트랜잭션을 사용하면 작업 그룹을 운영 한 후 데이터베이스가 일관된 상태를 유지할 수 있습니다.

MongoDB. 아이러니하게도, 단일 문서에 함께 저장할 관련 데이터에 대한 MongoDB 데이터 모델링의 기능은 다중 문서 트랜잭션이 필요하지 않은 문서 모델을 활용합니다. 그러나 개발자는 데이터 모델링의 유연성에 감탄합니다. 따라서 Mongodb의 거래 기능이 있습니다.

No-Code 데이터 파이프 라인 인 Hevo Data는 Mongodb &와 같은 100 개 이상의 광대 한 해에서 데이터를 원활하게 전송할 수 있습니다 Mongodb Atlas BI 도구에서 시각화하기 위해 데이터웨어 하우스 또는 원하는 목적지에. 신뢰할 수 있고 완전히 자동화되고 안전한 서비스입니다&rsquo;t 코드를 작성해야합니다!

사용중인 경우 NOSQL 데이터베이스 관리 시스템으로서 MongoDB 수동 데이터 통합에 대한 대안이없는 대안을 검색하면 Hevo는 귀하를 위해 쉽게 자동화 할 수 있습니다. Hevo, 100+ 소스 및 BI 도구와의 강력한 통합 (40 개 이상의 무료 소스 포함), 데이터를 내보내기 및로드 할뿐만 아니라 데이터를 변환하고 풍부하게하고 지피에서 분석 준비를 할 수 있습니다.

타기 위해 hevo를 가져 가고 싶다? 가입 14 일 무료 평가판 데이터 통합 ​​프로세스를 단순화합니다. 모든 비즈니스 요구 사항을 충족시키는 계획을 이해하려면 가격 세부 정보를 확인하십시오.

에 대한 귀하의 경험에 대해 알려주십시오 Java MongoDB 거래! 아래 의견 섹션에서 귀하의 생각을 우리와 공유하십시오.