mongotemplate example delete data java spring mongodb spring-data spring-data-mongodb

java - example - spring mongodb repository



Spring Data MongoDB: ¿cómo implementar “relaciones de entidad”? (2)

El título de esta pregunta es bastante contradictorio ya que estoy tratando de implementar relaciones en una base de datos no relacional ... :)

Pero lo que quiero decir es cómo definir asociaciones entre entidades en clases de modelo de aplicación que trabajan con MongoDB.

Trabajando con JPA a menudo @OneToMany anotaciones @ManyToMany o @OneToMany para definir las relaciones entre los objetos. ¿Hay algo similar en Spring Data MongoDB?

Al estudiar MongoDB, me di cuenta de que hay dos enfoques posibles para la asociación: Referencias y Datos incrustados .

¿Cuál es utilizado por Spring Data? ¿Es posible configurar el modo de asociación?


Puede usar el marco RelMongo que permite implementar relaciones al proporcionar soporte de anotaciones @OneToMany y @OneToOne.


Puede utilizar la anotación @DBRef para conservar la clase a la que se hace referencia en una colección separada, de lo contrario, el documento se conservará en el mismo documento (json). El uso de DBRef requiere una consulta adicional para el controlador mongodb, debe considerar esto para analizar los problemas de rendimiento.

De la documentación de datos de primavera.

@DBRef: se aplica en el campo para indicar que debe almacenarse utilizando un com.mongodb.DBRef.

7.3.4 Uso de DBRefs El marco de mapeo no tiene que almacenar objetos secundarios incrustados dentro del documento. También puede almacenarlos por separado y usar un DBRef para referirse a ese documento. Cuando el objeto se carga desde MongoDB, esas referencias se resolverán con entusiasmo y obtendrá un objeto mapeado que tiene el mismo aspecto que si hubiera sido almacenado incrustado dentro de su documento maestro.