diff --git a/src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java b/src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java
new file mode 100644
index 0000000000000000000000000000000000000000..0edaf8d2ec9840259844568a6c42d3d4208c2e3e
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/beans/Commande.java
@@ -0,0 +1,85 @@
+package fr.ulille.iut.pizzaland.beans;
+
+import java.util.List;
+
+import fr.ulille.iut.pizzaland.dto.CommandeCreateDto;
+import fr.ulille.iut.pizzaland.dto.CommandeDto;
+
+public class Commande {
+	private long id;
+	private String nom;
+	private String prenom;
+	private List<Pizza> pizzas;
+	
+	public Commande(String nom, String prenom, List<Pizza> pizzas) {
+		super();
+		this.nom = nom;
+		this.prenom = prenom;
+		this.pizzas = pizzas;
+	}
+	
+	public Commande() {
+	}
+	
+	public String getNom() {
+		return nom;
+	}
+	
+	public void setNom(String nom) {
+		this.nom = nom;
+	}
+	
+	public String getPrenom() {
+		return prenom;
+	}
+	
+	public void setPrenom(String prenom) {
+		this.prenom = prenom;
+	}
+	
+	public List<Pizza> getPizzas() {
+		return pizzas;
+	}
+	
+	public void setPizzas(List<Pizza> pizzas) {
+		this.pizzas = pizzas;
+	}
+	
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public static Commande fromDto(CommandeDto dto) {
+		Commande c = new Commande();
+		c.setNom(dto.getNom());
+		c.setPrenom(dto.getPrenom());
+		c.setId(dto.getId());
+		c.setPizzas(dto.getPizzas());
+		
+		return c;
+	}
+	
+	public static CommandeDto toDto(Commande c) {
+		CommandeDto dto = new CommandeDto();
+		dto.setNom(c.getNom());
+		dto.setPrenom(c.getPrenom());
+		dto.setId(c.getId());
+		dto.setPizzas(c.getPizzas());
+		
+		return dto;
+	}
+
+	public static Commande fromCreateDto(CommandeCreateDto dto) {
+		Commande c = new Commande();
+		
+		c.setNom(dto.getNom());
+		c.setPrenom(dto.getPrenom());
+		c.setPizzas(dto.getPizzas());
+		
+		return c;
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java b/src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java
new file mode 100644
index 0000000000000000000000000000000000000000..7c68a49b318aefe641d59313de045d8e65ca5a08
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/dao/CommandeDao.java
@@ -0,0 +1,62 @@
+package fr.ulille.iut.pizzaland.dao;
+
+import java.util.List;
+
+import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
+import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
+import org.jdbi.v3.sqlobject.statement.SqlQuery;
+import org.jdbi.v3.sqlobject.statement.SqlUpdate;
+
+import fr.ulille.iut.pizzaland.BDDFactory;
+import fr.ulille.iut.pizzaland.beans.Commande;
+import fr.ulille.iut.pizzaland.beans.Pizza;
+
+public interface CommandeDao {
+	PizzaDao pizzaDao = (PizzaDao) BDDFactory.buildDao(PizzaDao.class);
+	
+	@SqlUpdate("CREATE TABLE IF NOT EXISTS Commandes (id INTEGER PRIMARY KEY, firstname VARCHAR NOT NULL, lastname VARCHAR NOT NULL)")
+	public void  createTable();
+	
+	@SqlUpdate("CREATE TABLE IF NOT EXISTS CommandesAndPizzas (pizza INTEGER,"
+			+ "commande INTEGER,"
+			+ "PRIMARY KEY(pizza,commande),"
+			+ "FOREIGN KEY(pizza) REFERENCES Pizzas(id),"
+			+ "FOREIGN KEY(commande) REFERENCES commandes(id))")
+	public void createAssociationTable();
+	
+	public default void createTableAndAss() {
+		createTable();
+		createAssociationTable();
+	}
+	
+	@SqlUpdate("INSERT INTO commandes (firstname, lastname) VALUES (:nom, :prenom)")
+	@GetGeneratedKeys
+	public long insertCommande(String nom, String prenom);
+	
+	@SqlUpdate("INSERT INTO CommandesAndPizzas VALUES (:pizza, :commande)")
+	public void associateCommandePizza(long pizza, long commande);
+	
+	public default long insert(String nom, String prenom, List<Pizza> pizzas) {
+		long commande = insertCommande(nom,prenom);
+		
+		for(Pizza p : pizzas) {
+			associateCommandePizza(p.getId(),commande);
+		}
+		
+		return commande;
+	}
+
+	@SqlQuery("SELECT * FROM commandes")
+	@RegisterBeanMapper(Commande.class)
+	public List<Commande> getCommandes();
+
+	public default List<Commande> getAll(){
+		List<Commande> commandes = getCommandes();
+		
+		for(Commande c : commandes) {
+			c.setPizzas(pizzaDao.getOfCommande(c.getId()));
+		}
+		
+		return commandes;
+	}
+}
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..88cc4caf4bc82bde986417a793b171e11c968f9c
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeCreateDto.java
@@ -0,0 +1,35 @@
+package fr.ulille.iut.pizzaland.dto;
+
+import java.util.List;
+
+import fr.ulille.iut.pizzaland.beans.Pizza;
+
+public class CommandeCreateDto {
+	private String nom;
+	private String prenom;
+	private List<Pizza> pizzas;
+	
+	public String getNom() {
+		return nom;
+	}
+	
+	public void setNom(String nom) {
+		this.nom = nom;
+	}
+	
+	public String getPrenom() {
+		return prenom;
+	}
+	
+	public void setPrenom(String prenom) {
+		this.prenom = prenom;
+	}
+	
+	public List<Pizza> getPizzas() {
+		return pizzas;
+	}
+	
+	public void setPizzas(List<Pizza> pizzas) {
+		this.pizzas = pizzas;
+	}
+}
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..607bc66a8440d2f7b07fce2931a0b8ab743921af
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/dto/CommandeDto.java
@@ -0,0 +1,44 @@
+package fr.ulille.iut.pizzaland.dto;
+
+import java.util.List;
+
+import fr.ulille.iut.pizzaland.beans.Pizza;
+
+public class CommandeDto {
+	private long id;
+	private String nom;
+	private String prenom;
+	private List<Pizza> pizzas;
+	
+	public long getId() {
+		return id;
+	}
+	
+	public void setId(long id) {
+		this.id = id;
+	}
+	
+	public String getNom() {
+		return nom;
+	}
+	
+	public void setNom(String nom) {
+		this.nom = nom;
+	}
+	
+	public String getPrenom() {
+		return prenom;
+	}
+	
+	public void setPrenom(String prenom) {
+		this.prenom = prenom;
+	}
+	
+	public List<Pizza> getPizzas() {
+		return pizzas;
+	}
+	
+	public void setPizzas(List<Pizza> pizzas) {
+		this.pizzas = pizzas;
+	}
+}
diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/CommandeResource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/CommandeResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f0f3fddb8765fc35306614bf1a543f678ad9a7f
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/resources/CommandeResource.java
@@ -0,0 +1,56 @@
+package fr.ulille.iut.pizzaland.resources;
+
+import java.net.URI;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import fr.ulille.iut.pizzaland.beans.Commande;
+import fr.ulille.iut.pizzaland.dao.CommandeDao;
+import fr.ulille.iut.pizzaland.dto.CommandeCreateDto;
+import fr.ulille.iut.pizzaland.dto.CommandeDto;
+
+@Path("/commandes")
+public class CommandeResource {
+	private CommandeDao commandes;
+
+	@Context
+    public UriInfo uriInfo;
+
+	@GET
+	public List<CommandeDto> getAll(){
+		 return commandes.getAll().stream().map(Commande::toDto).collect(Collectors.toList());
+	}
+	
+	@POST
+    public Response createCommande(CommandeCreateDto dto) {
+    	/*Commande existing = commandes.findByName(dto.getNom());
+    	
+        if ( existing != null ) {
+            throw new WebApplicationException(Response.Status.CONFLICT);
+        }*/
+        
+        try {
+            Commande com = Commande.fromCreateDto(dto);
+            long id = commandes.insert(com.getNom(),com.getPrenom(),com.getPizzas());
+            com.setId(id);
+            
+            CommandeDto pDto = Commande.toDto(com);
+
+            URI uri = uriInfo.getAbsolutePathBuilder().path("" + id).build();
+
+            return Response.created(uri).entity(pDto).build();
+        }
+        catch ( Exception e ) {
+            e.printStackTrace();
+            throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE);
+        }
+	}
+}