<dependencies>
<dependency>
<groupId>org.jooby</groupId>
<artifactId>jooby</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.jooby</groupId>
<artifactId>jooby-hikari</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.17.Final</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.2</version>
</dependency>
</dependencies>
conf
db = "jdbc:postgresql://localhost:5432/mydatabase"
db.user = "username"
db.password = "password"
hibernate.dialect = "org.hibernate.dialect.PostgreSQL95Dialect"
hibernate.hbm2ddl.auto = "update"
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private int age;
}
import org.jooby.Jooby;
import org.jooby.Result;
import org.jooby.Status;
import org.jooby.hikari.HikariModule;
import org.jooby.jdbc.Jdbc;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import java.util.List;
public class UserController extends Jooby {
private EntityManagerFactory emf;
@Inject
public UserController(Jdbc jdbc) {
emf = Persistence.createEntityManagerFactory("defaultPersistenceUnit");
}
{
get("/users", req -> {
EntityManager em = emf.createEntityManager();
List<User> users = em.createQuery("SELECT u FROM User u", User.class).getResultList();
em.close();
return users;
});
post("/users", req -> {
User user = req.body(User.class);
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
em.persist(user);
tx.commit();
} catch (Exception e) {
tx.rollback();
throw e;
} finally {
em.close();
}
return new Result().status(Status.CREATED);
});
get("/users/:id", req -> {
int id = req.param("id").intValue();
EntityManager em = emf.createEntityManager();
User user = em.find(User.class, id);
em.close();
if (user == null) {
}
return user;
});
put("/users/:id", req -> {
int id = req.param("id").intValue();
User user = req.body(User.class);
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
user.setId(id);
em.merge(user);
tx.commit();
} catch (Exception e) {
tx.rollback();
throw e;
} finally {
em.close();
}
return user;
});
delete("/users/:id", req -> {
int id = req.param("id").intValue();
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
User user = em.find(User.class, id);
em.remove(user);
tx.commit();
} catch (Exception e) {
tx.rollback();
throw e;
} finally {
em.close();
}
return new Result().status(Status.NO_CONTENT);
});
}
public static void main(String[] args) {
run(UserController.class, args);
}
}
mvn clean package
java -jar target/myapp-1.0-SNAPSHOT.jar