Lavorando con il Service Builder vi sarete accorti sicuramente degli innumerevoli metodi messi a disposizione dalla classe di persistenza EntityLocalServiceUtil
; tra i vari metodi generati ce ne sono due utilizzati per recuperare un'istanza della singola entità a partire dalla chiave primaria: getEntity
e fetchEntity
.
Qual'è la differenza tra questi due metodi, apparentemente uguali?
Entrambi i metodi si comportano nel medesimo modo, ossia recuperano l'istanza dell'entità corrispondente alla chiave primaria passata come argomento; inoltre entrambi, in caso di errori di sistema, lanciano una SystemException
.
La firma dei due metodi è molto simile:
Entity getEntity(long primaryKey) throws PortalException, SystemException; Entity fetchEntity(long primaryKey) throws SystemException;
Ciò che li differenzia è il loro comportamento nel caso in cui l'entità corrispondente alla chiave primaria non esista; infatti mentre il metodo fetchEntity
restituisce semplicemente null
, il metodo getEntity
lancia un'eccezione di tipo NoSuchEntityException
(sottoclasse di PortalException
).
Quale dei due metodi utilizzare? Dipende da come si preferisce gestire l'errore a livello applicativo.
Da notare infine che il metodo getEntity
invoca internamente il metodo fetchEntity
.
Si ricorda che il termine Entity
va sostituito con il nome della entità specifica.