Spring Boot整合Hibernate与MongoDB:依赖及配置问题咨询
2. 从MySQL+Hibernate切换到MongoDB的具体步骤
如果你已经用MySQL+Hibernate做完了网站,现在要彻底切换到MongoDB,不用MySQL了,那按下面的步骤来调整:
第一步:修改Maven依赖
先把原来的MySQL驱动和Spring Data JPA依赖删掉,然后添加Spring Data MongoDB的starter:
需要移除的依赖:
<!-- 移除MySQL驱动 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <!-- 移除Spring Data JPA(因为不用Hibernate操作关系库了) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
需要添加的依赖:
<!-- Spring Data MongoDB核心依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <!-- 如果需要异步操作MongoDB,可以加这个 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId> </dependency>
第二步:更新配置文件
把原来的MySQL和JPA/Hibernate配置全部删掉,换成MongoDB的连接配置:
application.properties示例:
# MongoDB基础配置 spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=your_new_mongo_db # 如果MongoDB开了账号密码认证,加上下面这些 spring.data.mongodb.username=your_mongo_user spring.data.mongodb.password=your_mongo_password spring.data.mongodb.authentication-database=admin
或者用更简洁的URI方式:
spring.data.mongodb.uri=mongodb://username:password@localhost:27017/your_new_mongo_db?authSource=admin
第三步:调整实体类和Repository
这一步很关键,要把原来的JPA注解换成MongoDB的注解,Repository也要换成MongoDB的:
原JPA实体类修改前:
@Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_name") private String userName; // ... }
修改为MongoDB实体类:
@Document(collection = "users") // collection对应MongoDB里的集合,相当于关系库的表 public class User { @Id // MongoDB的主键,默认是ObjectId,用String类型也能自动映射 private String id; @Field("user_name") // 可选,指定集合里的字段名,不写就用属性名 private String userName; // ... }
原JPA Repository修改前:
public interface UserRepository extends JpaRepository<User, Long> {}
修改为MongoDB Repository:
public interface UserRepository extends MongoRepository<User, String> {}
第四步:一些要注意的点
- MongoDB是无Schema的,但实体类的字段会映射成集合里的字段,要注意类型兼容性;
- 原来的HQL/JPQL查询要改成MongoDB的查询方式,比如用
@Query写MongoQL,或者用Spring Data的方法命名查询; - 如果需要事务支持,MongoDB需要开启副本集(单节点默认不支持事务),Spring Data MongoDB也能支持事务操作。
内容的提问来源于stack exchange,提问作者vidarshana
相关产品推荐
相关产品推荐

