Ciao Massimo .Grazie della risposta .Mi preocupa perchè mi domando : Quando ho
piu chiamate in contemporanea essendo oggetti Singhelton non rischio di
restituire o eseguire operazioni su db Sbagliate ? una sorta di sovraposizione
degli accessi a db.Per stateless intendi definire le mie cleassi services con
@Stateless o anche i repository?Grazie mille ciao.
Il Venerdì 16 Febbraio 2018 13:27, "Massimo Ugues [email protected]
[it-torino-java-jug]" <[email protected]> ha scritto:
Ciao.Direi che l'approccio e' da manuale, in spring per default tutti i
bean hanno scopo singleton: la premessa importante da capire è che essendo
singleton devono essere stateless.Perchè hai dei dubbi sul Repository? Direi
che visto che possono essere visti come dei DAO anche loro dovrebbero essere
stateless.
Lo stereotipo @Repository mi pare che aggiunga degli aspetti per fare il
translate delle sottostanti sql exceptions e ti permetta di iniettare un
PersistenceContext o un EntityManager se dovessi averne bisogno (ripeto mi pare
e su questo sto andando a braccio).
Secondo me quindi tutto corretto ;)
P.S. I servizi Rest li stai annotando con @Controller? lo stereotipo dedicato è
@RestController.
2018-02-16 11:12 GMT+01:00 Danilo Boi [email protected]
[it-torino-java-jug] <[email protected]>:
Ciao A tutti .Grazie per aver accettato la richiesta.Mi sto occupando di
programmazionejava specificatamente , al momento , su Spring MVC.Sto
sviluppando dei servizi Rest...In particolare la Parte ORMla sto gestendo con
spring-mybatis Lasciando fare a spring lafactory dei mapper Mentre per il
layer dicontrollo sto seguendo l’approccio di alcuni esempi che ho trovato in
rete e cioè Un oggetto controllerannotato con @Controller Vari oggetti di
servizio (Businesslogic) annotati come @Service Oggetti di manager deimapper
MyBatis annotati come @Repository All’interno di questooggetto eseguo del
@Controller eseguo @Autowired degli oggetti @ServiceNegli oggetti
@Serviceeseguo @Autowired degli oggetti @RepositoryChe a loro volta iniettano
imapper MyBatis. Il dubbio che mi attanagliada qualche giorno è che
SpringAll’avvio istanzia il @Controllercon un riferimento a n @ServiceQuesti a
loro volta saranno“Singleton” che a loro volta iniettanoGli oggetti
@Repositoryche a loro volta iniettano i mapper MyBatis. Da quello che ho capito
mitrovo in una situazione in cui tutti gli oggetti sono “Singleton” e questo
puòandarmi bene per il @controller e forse anche per il @Service ma
miintimorisce per il layer @Repository. Ho sbagliato l’approccio ? Scusate e
grazie .Ciao.
--
Massimo Ugues
#yiv5301804050 #yiv5301804050 -- #yiv5301804050ygrp-mkp {border:1px solid
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5301804050
#yiv5301804050ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5301804050
#yiv5301804050ygrp-mkp #yiv5301804050hd
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}#yiv5301804050 #yiv5301804050ygrp-mkp #yiv5301804050ads
{margin-bottom:10px;}#yiv5301804050 #yiv5301804050ygrp-mkp .yiv5301804050ad
{padding:0 0;}#yiv5301804050 #yiv5301804050ygrp-mkp .yiv5301804050ad p
{margin:0;}#yiv5301804050 #yiv5301804050ygrp-mkp .yiv5301804050ad a
{color:#0000ff;text-decoration:none;}#yiv5301804050 #yiv5301804050ygrp-sponsor
#yiv5301804050ygrp-lc {font-family:Arial;}#yiv5301804050
#yiv5301804050ygrp-sponsor #yiv5301804050ygrp-lc #yiv5301804050hd {margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5301804050
#yiv5301804050ygrp-sponsor #yiv5301804050ygrp-lc .yiv5301804050ad
{margin-bottom:10px;padding:0 0;}#yiv5301804050 #yiv5301804050actions
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv5301804050
#yiv5301804050activity
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv5301804050
#yiv5301804050activity span {font-weight:700;}#yiv5301804050
#yiv5301804050activity span:first-child
{text-transform:uppercase;}#yiv5301804050 #yiv5301804050activity span a
{color:#5085b6;text-decoration:none;}#yiv5301804050 #yiv5301804050activity span
span {color:#ff7900;}#yiv5301804050 #yiv5301804050activity span
.yiv5301804050underline {text-decoration:underline;}#yiv5301804050
.yiv5301804050attach
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}#yiv5301804050 .yiv5301804050attach div a
{text-decoration:none;}#yiv5301804050 .yiv5301804050attach img
{border:none;padding-right:5px;}#yiv5301804050 .yiv5301804050attach label
{display:block;margin-bottom:5px;}#yiv5301804050 .yiv5301804050attach label a
{text-decoration:none;}#yiv5301804050 blockquote {margin:0 0 0
4px;}#yiv5301804050 .yiv5301804050bold
{font-family:Arial;font-size:13px;font-weight:700;}#yiv5301804050
.yiv5301804050bold a {text-decoration:none;}#yiv5301804050 dd.yiv5301804050last
p a {font-family:Verdana;font-weight:700;}#yiv5301804050 dd.yiv5301804050last p
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv5301804050
dd.yiv5301804050last p span.yiv5301804050yshortcuts
{margin-right:0;}#yiv5301804050 div.yiv5301804050attach-table div div a
{text-decoration:none;}#yiv5301804050 div.yiv5301804050attach-table
{width:400px;}#yiv5301804050 div.yiv5301804050file-title a, #yiv5301804050
div.yiv5301804050file-title a:active, #yiv5301804050
div.yiv5301804050file-title a:hover, #yiv5301804050 div.yiv5301804050file-title
a:visited {text-decoration:none;}#yiv5301804050 div.yiv5301804050photo-title a,
#yiv5301804050 div.yiv5301804050photo-title a:active, #yiv5301804050
div.yiv5301804050photo-title a:hover, #yiv5301804050
div.yiv5301804050photo-title a:visited {text-decoration:none;}#yiv5301804050
div#yiv5301804050ygrp-mlmsg #yiv5301804050ygrp-msg p a
span.yiv5301804050yshortcuts
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv5301804050
.yiv5301804050green {color:#628c2a;}#yiv5301804050 .yiv5301804050MsoNormal
{margin:0 0 0 0;}#yiv5301804050 o {font-size:0;}#yiv5301804050
#yiv5301804050photos div {float:left;width:72px;}#yiv5301804050
#yiv5301804050photos div div {border:1px solid
#666666;min-height:62px;overflow:hidden;width:62px;}#yiv5301804050
#yiv5301804050photos div label
{color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv5301804050
#yiv5301804050reco-category {font-size:77%;}#yiv5301804050
#yiv5301804050reco-desc {font-size:77%;}#yiv5301804050 .yiv5301804050replbq
{margin:4px;}#yiv5301804050 #yiv5301804050ygrp-actbar div a:first-child
{margin-right:2px;padding-right:5px;}#yiv5301804050 #yiv5301804050ygrp-mlmsg
{font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv5301804050
#yiv5301804050ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv5301804050
#yiv5301804050ygrp-mlmsg select, #yiv5301804050 input, #yiv5301804050 textarea
{font:99% Arial, Helvetica, clean, sans-serif;}#yiv5301804050
#yiv5301804050ygrp-mlmsg pre, #yiv5301804050 code {font:115%
monospace;}#yiv5301804050 #yiv5301804050ygrp-mlmsg *
{line-height:1.22em;}#yiv5301804050 #yiv5301804050ygrp-mlmsg #yiv5301804050logo
{padding-bottom:10px;}#yiv5301804050 #yiv5301804050ygrp-msg p a
{font-family:Verdana;}#yiv5301804050 #yiv5301804050ygrp-msg
p#yiv5301804050attach-count span {color:#1E66AE;font-weight:700;}#yiv5301804050
#yiv5301804050ygrp-reco #yiv5301804050reco-head
{color:#ff7900;font-weight:700;}#yiv5301804050 #yiv5301804050ygrp-reco
{margin-bottom:20px;padding:0px;}#yiv5301804050 #yiv5301804050ygrp-sponsor
#yiv5301804050ov li a {font-size:130%;text-decoration:none;}#yiv5301804050
#yiv5301804050ygrp-sponsor #yiv5301804050ov li
{font-size:77%;list-style-type:square;padding:6px 0;}#yiv5301804050
#yiv5301804050ygrp-sponsor #yiv5301804050ov ul {margin:0;padding:0 0 0
8px;}#yiv5301804050 #yiv5301804050ygrp-text
{font-family:Georgia;}#yiv5301804050 #yiv5301804050ygrp-text p {margin:0 0 1em
0;}#yiv5301804050 #yiv5301804050ygrp-text tt {font-size:120%;}#yiv5301804050
#yiv5301804050ygrp-vital ul li:last-child {border-right:none
!important;}#yiv5301804050