2.3.3 文档持久化
MongoDB也有像使用JPA那样的资源库,如代码清单2-16所示,为用户文档创建了一个Repository接口,继承于MongoRepository,实现了文档持久化。
代码清单2-16 用户文档持久化
public interface UserRepository extends MongoRepository<User, String> {
User findByUsername(String username);
}
MongoRepository的继承关系如图2-4所示,看起来跟JPA的资源库的继承关系没有什么两样,它也包含访问数据库的丰富功能。
代码清单2-17是用在测试中的使用MongoDB的一个配置类定义,其中@PropertySource指定读取数据库配置文件的位置和名称,@EnableMongoRepositories启用资源库并设定定义资源库接口放置的位置,这里使用环境变量Environment来读取配置文件的一些数据库配置参数,然后使用一个数据库客户端,连接MongoDB服务器。
代码清单2-17 TestDataSourceConfig配置类
@Configuration
@EnableMongoRepositories(basePackages = "dbdemo.mongo.repositories")
@PropertySource("classpath:test.properties")
public class TestDataSourceConfig extends AbstractMongoConfiguration {
@Autowired private Environment env;
@Override
public String getDatabaseName(){
return env.getRequiredProperty("mongo.name");
}
@Override
@Bean
public Mongo mongo() throws Exception {
ServerAddress serverAddress = new ServerAddress(env.getRequiredProperty
("mongo.host"));
List<MongoCredential> credentials = new ArrayList<>();
return new MongoClient(serverAddress, credentials);
}
}