将 mongo 集合详细信息存储为 Java 常量的更好方法

问题描述 投票:0回答:1
public class MongoDBConstants {

    // Define the collection names
    public static final String USER_COLLECTION = "users";
    public static final String PRODUCT_COLLECTION = "products";
    
    // Define the fields for the "users" collection
    public static final String USER_ID = "userId";
    public static final String USER_NAME = "userName";
    public static final String USER_EMAIL = "userEmail";
    public static final String USER_AGE = "userAge";
    public static final String USER_ADDRESS = "address";
    public static final String USER_ADDRESS_STREET = "street";
    public static final String USER_ADDRESS_CITY = "city";
    public static final String USER_CONTACTS = "contacts";
    public static final String USER_CONTACTS_PHONE = "phone";
    public static final String USER_CONTACTS_EMAIL = "email";
    public static final String USER_ORDERS = "orders";
    public static final String USER_ORDERS_ORDER_ID = "orderId";
    public static final String USER_ORDERS_PRODUCTS = "products";
    public static final String USER_ORDERS_PRODUCT_NAME = "productName";
    public static final String USER_ORDERS_PRODUCT_PRICE = "productPrice";
    
    // Define the fields for the "products" collection
    public static final String PRODUCT_ID = "productId";
    public static final String PRODUCT_NAME = "productName";
    public static final String PRODUCT_PRICE = "productPrice";
    public static final String PRODUCT_CATEGORY = "productCategory";
    public static final String PRODUCT_DETAILS = "productDetails";
    public static final String PRODUCT_DETAILS_MANUFACTURER = "manufacturer";
    public static final String PRODUCT_DETAILS_DESCRIPTION = "description";

}

嗨,我正在使用 MongoDb 连接开发 Springboot 启动项目。
当前存储 mongodb 集合详细信息(例如集合和字段名称)作为常量存储在 Java 文件中。只是想知道是否有更好的方法来存储这些常量,而不是作为 Java 常量,这可以让开发人员更好地理解 mongo 集合结构和在基本查询中的动态用法,其中不需要从最顶层的父级字段引用字段?

mongodb mongodb-query spring-data-mongodb
1个回答
0
投票

使用Java常量来存储MongoDB集合和字段名称是一种常见的做法,尤其是在Spring Boot项目中。它提供了一个集中的位置来管理这些名称,并有助于避免直接在代码中对字符串进行硬编码,从而减少拼写错误的机会并使代码更易于维护。

但是,如果您正在寻找替代方法或改进,这里有一些建议:

1。 MongoDB 映射的注释:

如果您使用 Spring Data MongoDB,则可以在模型类上使用注释来定义 MongoDB 集合和字段名称。此方法提供了一种更自然且类型安全的方式来指定集合和字段名称。例如:

@Document(collection = "users")
public class User {
    @Field("user_name")
    private String userName;

    // Other fields and methods
}

这样,集合和字段名称就直接与实体类相关联。

2。外部配置:

将集合和字段名称存储在外部配置文件中(例如,application.properties或application.yml)。这种方法允许动态更改而无需重新编译代码。

mongodb.collections.users=users
mongodb.fields.user.name=userName

然后,在代码中使用这些属性:

@Value("${mongodb.collections.users}")
private String userCollection;

@Value("${mongodb.fields.user.name}")
private String userNameField;

3.自定义注释或枚举:

创建自定义注释或枚举来表示您的集合和字段。这样,您就可以在代码中使用注释或枚举值。虽然这种方法引入了更多的复杂性,但它对于更好的组织很有用。

public enum Collections {
    @CollectionName("users")
    USERS,

    @CollectionName("products")
    PRODUCTS
}

然后你可以像这样使用它:

String userCollection = Collections.USERS.getCollectionName();

4。文档定义类:

考虑使用单独的类来定义 MongoDB 文档结构。这有助于更好地组织代码并提供文档结构的清晰表示。

public class User {
    private String userName;
    private Address address;
    private List<Contact> contacts;
    private List<Order> orders;

    // Getters and setters
}

public class Address {
    private String street;
    private String city;

    // Getters and setters
}

// Other document definition classes

选择最适合您的项目要求和编码风格的方法。根据具体情况,结合不同的方法也可能是有益的。

© www.soinside.com 2019 - 2024. All rights reserved.