framework-web:spring:models

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
framework-web:spring:models [2019/02/04 02:52] – [Configuration] jcheronframework-web:spring:models [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 33: Ligne 33:
 {{:framework-web:spring:classdiagram.png?|}} {{:framework-web:spring:classdiagram.png?|}}
  
 +=== Création d'une Entité ===
  
 +<sxh java>
 +package s4.spring.td2.models;
 +
 +import javax.persistence.Entity;
 +import javax.persistence.GeneratedValue;
 +import javax.persistence.GenerationType;
 +import javax.persistence.Id;
 +
 +@Entity
 +public class Organization {
 + @Id
 + @GeneratedValue(strategy=GenerationType.AUTO)
 + private int id;
 +
 + private String name;
 + private String domain;
 + private String aliases;
 +}
 +</sxh>
 +
 +__Annotations :__
 +  * @Entity
 +  * [[https://www.objectdb.com/java/jpa/entity/id|@Id]]
 +  * [[https://www.objectdb.com/java/jpa/entity/generated|@GeneratedValue]]
 +
 +=== Création d'un Repository ===
 +
 +<sxh java>
 +public interface OrgaRepository extends JpaRepository<Organization, Integer> {
 +    List<Organization> findByDomain(String domain);
 +    List<Organization> findByName(String name);
 +}
 +
 +</sxh>
 +
 + [[https://docs.spring.io/spring-data/jpa/docs/1.6.0.RELEASE/reference/html/jpa.repositories.html|JPA Repositories]]
 +
 +=== Test d'ajout d'une instance ===
 +Les données sont postées depuis un formulaire contenant les champs name, domain et aliases :
 +
 +<sxh java>
 +@Controller
 +@RequestMapping("/orgas/")
 +public class OrgasController {
 +
 + @Autowired
 + private OrgaRepository repo;
 +
 + @PostMapping("new")
 + @ResponseBody
 + public String newOrga(Organization orga) {
 + repo.saveAndFlush(orga);
 + return orga+" ajoutée.";
 + }
 +}
 +</sxh>
 +
 +==== Relations ====
 +
 +=== ManyToOne ===
 +
 +Chaque groupe appartient à une organisation.
 +
 +<sxh java>
 +@Entity
 +public class Groupe {
 + @Id
 + @GeneratedValue(strategy=GenerationType.AUTO)
 + private int id;
 +
 + @ManyToOne
 + private Organization organization;
 +}
 +</sxh>
 +
 +
 +=== OneToMany ===
 +
 +Chaque organisation possède plusieurs groupes. (la relation est bi-directionnelle dans ce cas)
 +
 +<sxh java>
 +@Entity
 +public class Organization {
 + @Id
 + @GeneratedValue(strategy=GenerationType.AUTO)
 + private int id;
 +
 + private String name;
 + private String domain;
 + private String aliases;
 +
 + @OneToMany(cascade=CascadeType.ALL,mappedBy="organization")
 + private List<Groupe> groupes;
 +}
 +</sxh>
 +
 +=== ManyToMany ===
 +
 +Chaque utilisateur peut appartenir à plusieurs groupes. Dans chaque groupe, on a plusieurs utilisateurs.
 +
 +<sxh java>
 +@Entity
 +public class User {
 + @Id
 + @GeneratedValue(strategy=GenerationType.AUTO)
 + private int id;
 +
 + @ManyToOne
 + private Organization organization;
 +
 + @ManyToMany(mappedBy="users")
 + private List<Groupe> groupes;
 +}
 +</sxh>
 +
 +<sxh java>
 +@Entity
 +public class Groupe{
 + @Id
 + @GeneratedValue(strategy=GenerationType.AUTO)
 + private int id;
 +
 + @ManyToOne
 + private Organization organization;
 +
 + @ManyToMany
 + @JoinTable(name = "user_group")
 + private List<User> users;
 +}
 +</sxh>
  • framework-web/spring/models.1549245142.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)