| 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/07 22:12] – [Classes] jcheron | framework-web:spring:models [2025/08/12 02:35] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| |
| <sxh java> | <sxh java> |
| public interface OrgaRepository extends JpaRepository<Organization,Integer> { | public interface OrgaRepository extends JpaRepository<Organization, Integer> { |
| | |
| } | |
| </sxh> | |
| | |
| <sxh java> | |
| public interface OrgaRepository extends CrudRepository<Organization, Integer> { | |
| List<Organization> findByDomain(String domain); | List<Organization> findByDomain(String domain); |
| | List<Organization> findByName(String name); |
| } | } |
| |
| </sxh> | </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 === | === Test d'ajout d'une instance === |
| @ResponseBody | @ResponseBody |
| public String newOrga(Organization orga) { | public String newOrga(Organization orga) { |
| repo.save(orga); | repo.saveAndFlush(orga); |
| return orga+" ajoutée."; | return orga+" ajoutée."; |
| } | } |
| === ManyToOne === | === 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> |
| | |
| | ==== Logs ==== |
| | Pour tracer les logs Hibernate et visualiser les requêtes, activez les options suivantes dans application.properties : |
| | |
| | <sxh> |
| | #spring.jpa.show-sql=true |
| | spring.jpa.properties.hibernate.format_sql=true |
| | # logs the SQL statements |
| | # basic log level for all messages |
| | logging.level.org.hibernate=info |
| | # SQL statements and parameters |
| | logging.level.org.hibernate.SQL=debug |
| | logging.level.org.hibernate.orm.jdbc.bind=trace |
| | </sxh> |
| |