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/07 11:56] – [Classes] jcheronframework-web:spring:models [2025/08/12 02:35] (Version actuelle) – modification externe 127.0.0.1
Ligne 57: Ligne 57:
 __Annotations :__ __Annotations :__
   * @Entity   * @Entity
-  * @Id +  * [[https://www.objectdb.com/java/jpa/entity/id|@Id]] 
-  * @GeneratedValue+  * [[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> 
 + 
 +==== 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>
  
  • framework-web/spring/models.1549536984.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)