问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MongoDB-spring data和morphia有什么异同点

发布网友 发布时间:2022-04-24 05:00

我来回答

1个回答

热心网友 时间:2022-04-07 20:06

首先我们需要一个生成和配置mongodb的工厂类:
1 public class MongoFactoryBean extends AbstractFactoryBean<Mongo> {
2
3 // 表示服务器列表(主从复制或者分片)的字符串数组
4 private String[] serverStrings;
5 // mongoDB配置对象
6 private MongoOptions mongoOptions;
7 // 是否主从分离(读取从库),默认读写都在主库
8 private boolean readSecondary = false;
9 // 设定写策略(出错时是否抛异常),默认采用SAFE模式(需要抛异常)
10 private WriteConcern writeConcern = WriteConcern.SAFE;
11
12 @Override
13 public Class<?> getObjectType() {
14 return Mongo.class;
15 }
16
17 @Override
18 protected Mongo createInstance() throws Exception {
19 Mongo mongo = initMongo();
20
21 // 设定主从分离
22 if (readSecondary) {
23 mongo.setReadPreference(ReadPreference.secondaryPreferred());
24 }
25
26 // 设定写策略
27 mongo.setWriteConcern(writeConcern);
28 return mongo;
29 }
30
31 /**
32 * 初始化mongo实例
33 * @return
34 * @throws Exception
35 */
36 private Mongo initMongo() throws Exception {
37 // 根据条件创建Mongo实例
38 Mongo mongo = null;
39 List<ServerAddress> serverList = getServerList();
40
41 if (serverList.size() == 0) {
42 mongo = new Mongo();
43 }else if(serverList.size() == 1){
44 if (mongoOptions != null) {
45 mongo = new Mongo(serverList.get(0), mongoOptions);
46 }else{
47 mongo = new Mongo(serverList.get(0));
48 }
49 }else{
50 if (mongoOptions != null) {
51 mongo = new Mongo(serverList, mongoOptions);
52 }else{
53 mongo = new Mongo(serverList);
54 }
55 }
56 return mongo;
57 }
58
59
60 /**
61 * 根据服务器字符串列表,解析出服务器对象列表
62 * <p>
63 *
64 * @Title: getServerList
65 * </p>
66 *
67 * @return
68 * @throws Exception
69 */
70 private List<ServerAddress> getServerList() throws Exception {
71 List<ServerAddress> serverList = new ArrayList<ServerAddress>();
72 try {
73 for (String serverString : serverStrings) {
74 String[] temp = serverString.split(":");
75 String host = temp[0];
76 if (temp.length > 2) {
77 throw new IllegalArgumentException(
78 "Invalid server address string: " + serverString);
79 }
80 if (temp.length == 2) {
81 serverList.add(new ServerAddress(host, Integer
82 .parseInt(temp[1])));
83 } else {
84 serverList.add(new ServerAddress(host));
85 }
86 }
87 return serverList;
88 } catch (Exception e) {
89 throw new Exception(
90 "Error while converting serverString to ServerAddressList",
91 e);
92 }
93 }
94
95 /* ------------------- setters --------------------- */
96 }
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如果银行拒贷有哪些办法 小天鹅滚筒洗衣机水位多少合适 阴阳师百闻牌攻略大全 百闻牌式神卡组阵容大全 阴阳师百闻牌三大妖狐阵容推荐 妖狐流派怎么搭配?-新手攻略-安族网... 阴阳师百闻牌妖狐快攻阵容 怎么搭配攻略推荐 阴阳师百闻牌妖狐技能攻略 妖狐属性及卡组搭配推荐-新手攻略-安族网... 阴阳师百闻牌妖狐最强卡组 阵容怎么搭配攻略 阴阳师百闻牌妖狐卡组推荐 怎么搭配攻略分享 带鹏字的公司名字大全 鹏字开头公司起名 叶罗丽娃娃玩具店在哪 古代苹果不叫“苹果”,而是有一个很唯美的名字,它叫什么呢? 论文查重之后如何降低重复率? 澄海的林檎是什么 spring data mongodb 怎么创建集合 苹果是林檎是一样的吗 求解决,使用Spring-data-mongodb写出根据日期时间(按日、周、月、年... 论文查重怎么降低? 苹果手机为什么叫苹果呢、?? 硅胶和PP怎么粘合啊 产品结构设计 “林檎”是什么 mongodb spring用户名密码怎么配置 林檎是什么? 高校要求论文重查率降到20%以下,这样可以防止学术造假吗? spring-data-mongodb 林檎指的是什么梗? 论文降低查重率的方法有什么 spring boot mongodb 配置文件有哪些可以配置 为什么特百惠冰冻保鲜盒不变形? 苹果本名林檎,什么时候变为现在的名称的? Spring整合mongodb有哪些靠谱点的配置文件 有什么能快速降低论文查重率的方法吗? spring-data-mongodb 怎么看mongodb的语句 有哪些降低论文查重的办法? 苹果日语怎么说帮翻译下 多个mongoDB数据源,怎么配置动态切换 论文降重可以降多少? 林檎究竟是什么水果 怎么在spring-data-mongodb中进行字段间的比较 论文查重是一个什么样的过程?应该如何降低查重率? spring-data-mongodb最新版本里面怎么还是2.13的驱动 苹果,原产地在哪里?水果?手机(电脑)? 如何利用spring data mongodb 进行多条件查询 林檎都笑爆了什么梗 如何搞定毕业论文查重? 那个手机还能用吗 人鱼小姐大结局 雅丽英 最后有死吗? 花盆里总长小飞虫 是土的原因还是花的原因 电视剧《人鱼小姐》最后的结局是什么 电视剧《人鱼小姐》的结局是什么? 正在养花的花盆里为什么有小飞虫?