Bonjour,

Ma question porte sur la manière de faire interagir la couche Dao et Service d'une application. Partons du code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class MagasinDao{
    ...
    void delete(...){}
    ...
}
 
class StockDao{
    ...
    void delete(...){}
    ...
}
 
class ArticleDao{
    ...
    void delete(...){}
    ...
}
 
class MagasinServiceImpl implements MagasinService{
    @Autowired
    MagasinDao magasinDao;
 
    @Autowired
    StockService stockService;
    ...
    void delete(...){
         //some code and test
         stockService.delete(...);
         magasinDao.delete(...);
    }
    ...
}
 
class StockServiceImpl implements StockService{
    @Autowired
    StockDao stockDao;
 
    @Autowired
    ArticleService articleService;
    ...
    void delete(...){
         //some code and test
         articleService.delete(...);
         stockDao.delete(...);
    }
    ...
}
 
class ArticleServiceImpl implements ArticleService{
    @Autowired
    ArticleDao articleDao;
    ...
    void delete(...){
         //some code and test
         articleDao.delete(...);
    }
    ...
}
Comme vous pouvez le voir:
1) j'essai de n'appeler dans un Service que la Dao correspondante
2)et si il y a besoin de faire des opérations sur d'autres entités que celle dont est en charge le Service, je fais appel aux autres Services correspondants au lieu de faire appel au Dao correspondantes.

Dans l'optique d'adopter l'architecture la plus souple possible(gain en ligne de code, ré utilisabilité) :
1)j'aimerais connaitre vos critiques, conseil
2)les bonnes pratiques à adopter pour ne pas violer le modèle en couche Dao/Service
3)vos manières de faire pour manipuler des entités externes à un Service spécifique.
4)Des exemples succints de code