@startuml package com.iluwatar.repository { interface JpaRepository { + findById(long) : T {abstract} + getEntityVersionById(long) : int {abstract} + update(T) : int {abstract} } } package com.iluwatar.api { interface UpdateService { + doUpdate(T, long) : T {abstract} } } package com.iluwatar.service { class CardUpdateService { - cardJpaRepository : JpaRepository + CardUpdateService(cardJpaRepository : JpaRepository) + doUpdate(obj : Card, id : long) : Card } } package com.iluwatar.model { class Card { - id : long - personId : long - sum : float - version : int + Card() + Card(id : long, personId : long, sum : float, version : int) + builder() : CardBuilder {static} # canEqual(other : Object) : boolean + equals(o : Object) : boolean + getId() : long + getPersonId() : long + getSum() : float + getVersion() : int + hashCode() : int + setId(id : long) + setPersonId(personId : long) + setSum(sum : float) + setVersion(version : int) + toString() : String } class CardBuilder { - id : long - personId : long - sum : float - version : int ~ CardBuilder() + build() : Card + id(id : long) : CardBuilder + personId(personId : long) : CardBuilder + sum(sum : float) : CardBuilder + toString() : String + version(version : int) : CardBuilder } } CardUpdateService --> "-cardJpaRepository" JpaRepository CardUpdateService ..|> UpdateService @enduml