内容简介:使用 Hibernate 的时候我们可以利用MongoDB 默认会使用生成的 ObjectId 作为主键 ID:如果想使用自定义的 ID,也可以将
数据校验
使用 Hibernate 的时候我们可以利用 javax.validation
包中提供的一系列 API 对传入数据库的数据进行校验。使用 MongoDB 时,需要显式的在配置当中打开,不然校验不会生效:
@Configuration public class DataSourceConfig { @Bean public ValidatingMongoEventListener validatingMongoEventListener() { return new ValidatingMongoEventListener(validator()); } @Bean public LocalValidatorFactoryBean validator() { return new LocalValidatorFactoryBean(); } }
索引有关
使用非 ObjectId 作为 Id
MongoDB 默认会使用生成的 ObjectId 作为主键 ID:
@Data @Document public class Book { @Id private String id; // ... }
如果想使用自定义的 ID,也可以将 @Id
加在自定义字段上:
@Data @Document public class Book { @Id private String bookId; // ... }
但注意,这时 bookId
一定要进行初始化操作,不然 MongoDB 仍然会生成一个 ObjectId 作为主键。
同时,主键 @Id
一定是唯一的,因此不需要再使用 @Indexed
。
联合索引
和 MySQL 类似,MongoDB 的联合索引(Compound Index)也是按照最左原则进行匹配的。例如下面一个索引:
@Data @Document @CompoundIndexes({ @CompoundIndex(name = "code_and_owner_idx", unique = true, def = "{'code': 1, 'ownerId': 1}") }) public class Book { @Id private String bookId; @NotBlank private String code; @NotBlank private String ownerId; }
使用 code
和 ownerId
进行查询会 hit 到索引,使用 code
查询会 hit 到索引,但使用 ownerId
进行查询则会进行 Document 扫描,当数据量大的时候性能会有非常大的下降。因此在建立联合索引的时候应该特别注意字段的顺序。
事务有关
MongoDB 3.X 并不支持多 Document 的事务。MongoDB 4.0 才开始支持多 Document 的事务。
当在 Spring 使用时,单纯的加入 @Transactional
是不行的,需要显式的在配置当中打开:
@Configuration public class DataSourceConfig { @Bean MongoTransactionManager transactionManager(MongoDbFactory dbFactory) { return new MongoTransactionManager(dbFactory); } }
MongoDB 4.0 的事务支持并不支持单机(Standalone)部署,因此如果使用本地开发的单机 MongoDB,加上 @Transactional
进行操作,会直接导致崩溃(MongoDrive 3.8.2)。
同时 MongoDB 4.0 不支持在分片(Sharding)部署上使用,对分片的支持计划 4.2 才推出。考虑到大部分公司使用的还是 3.X 的版本,因此 MongoDB 现在的事务支持基本是不可用的。设计 Mongo 文档格式的时候,应考虑尽量减少多文档事务的操作,
参考资料
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Lua 5.3.6 发布,可能是 5.3 分支的最后一次更新
- SQL Server 更新统计信息出现严重错误,应放弃任何可能产生的结果
- Android Studio 2.3更新:警告:使用不兼容的插件进行注释处理:android-apt.这可能会导致意外行为
- IPFS:区块链“不可能三角”的可能解 | 万向区块链小课堂
- 响应慢也有可能是SQL惹的祸:Limit可能会惹祸上身
- 私有链可能没有未来?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Black Box Society
Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00
Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!
MD5 加密
MD5 加密工具
html转js在线工具
html转js在线工具