Module rapidoid-quick

rapidoid-web + Hibernate + Logback + MySQL Connector...
import org.rapidoid.annotation.Valid;
import org.rapidoid.jpa.JPA;
import org.rapidoid.setup.App;
import org.rapidoid.setup.On;
public class Main {
    public static void main(String[] args) {
        App.bootstrap(args).jpa(); // bootstrap JPA
        On.get("/books").json(() -> JPA.of(Book.class).all()); // get all books
"/books").json((@Valid Book b) ->; // insert new book if valid
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
public class Book {
    public Long id;
    public String title;
    public int year;

Let's send some HTTP requests and check the results:

POST /books {"title":"Java Book","year":2016}
{"id":1,"title":"Java Book","year":2016}
GET /books
[{"id":1,"title":"Java Book","year":2016}]
POST /books {"year":2004}
{"error":"Validation failed: Book.title (may not be null)","code":422,"status":"Unprocessable Entity"}
GET /books
[{"id":1,"title":"Java Book","year":2016}]

HTTP server routes information:

Verb Path Zone Content type MVC View name Roles
GET /books main json
POST /books main json