Olá, Jorge.
JNoSQL
Um projeto que visa criar uma API única para qualquer solução NoSQL. É um projeto da Eclipse Foundation mantido pelo brasileiro Otávio Santana.
Você mapeia sua entidade com anotações parecidas com as do JPA, mas que são do pacote org.jnosql.artemis
.
@Entity("Person")
public class Person {
@Id("id")
private long id;
@Column
private String name;
@Column
private Address address;
@Column
private List<String> phones;
//getter, setter e construtor padrão
}
Você pode definir uma interface que estende de org.jnosql.artemis.Repository
e o JNoSQL vai cuidar de gerar uma implementação.
public interface PersonRepository extends Repository<Person, Long> {
List<Person> findByName(String name);
}
Na hora de usar o repositório ficaria algo como o seguinte:
Random random = new Random();
Long id = random.nextLong();
try (SeContainer container = SeContainerInitializer.newInstance().initialize()) {
Person person = //cria pessoa...
//obtem instância do repositório
PersonRepository repository = container.select(PersonRepository.class)
.select(DatabaseQualifier.ofDocument()).get();
//insere
repository.save(person);
//busca
List<Person> people = repository.findByName("Fulano");
}
Referência:
http://www.jnosql.org/getting_started.html#document
Spring Data MongoDB
Específico para o MongoDB.
Use as anotações parecidas com o JPA, mas do pacote org.springframework.data.annotation
.
public class Customer {
@Id
public String id;
private String firstName;
private String lastName;
//getter, setter e construtor padrão
}
Crie uma interface que estende de org.springframework.data.mongodb.repository.MongoRepository
:
public interface CustomerRepository extends MongoRepository<Customer, String> {
public Customer findByFirstName(String firstName);
public List<Customer> findByLastName(String lastName);
}
Injete o repositório:
@Autowired
private CustomerRepository repository;
Use o repositório:
repository.deleteAll();
repository.save(new Customer("Alice", "Smith"));
List<Customer> customers = repository.findAll();
Customer alice = repository.findByFirstName("Alice");
Referência:
https://spring.io/guides/gs/accessing-data-mongodb/