java-design-patterns/service-layer/etc/service-layer.urm.puml

159 lines
4.5 KiB
Plaintext
Raw Permalink Normal View History

2019-12-07 18:03:49 +02:00
@startuml
package com.iluwatar.servicelayer.hibernate {
class HibernateUtil {
- LOGGER : Logger {static}
- sessionFactory : SessionFactory {static}
- HibernateUtil()
+ dropSession() {static}
+ getSessionFactory() : SessionFactory {static}
}
}
package com.iluwatar.servicelayer.common {
abstract class BaseEntity {
+ BaseEntity()
+ getId() : Long {abstract}
+ getName() : String {abstract}
+ setId(Long) {abstract}
+ setName(String) {abstract}
}
interface Dao<E extends BaseEntity> {
+ delete(E extends BaseEntity) {abstract}
+ find(Long) : E extends BaseEntity {abstract}
+ findAll() : List<E extends BaseEntity> {abstract}
+ merge(E extends BaseEntity) : E extends BaseEntity {abstract}
+ persist(E extends BaseEntity) {abstract}
}
abstract class DaoBaseImpl<E extends BaseEntity> {
# persistentClass : Class<E extends BaseEntity>
+ DaoBaseImpl<E extends BaseEntity>()
+ delete(entity : E extends BaseEntity)
+ find(id : Long) : E extends BaseEntity
+ findAll() : List<E extends BaseEntity>
# getSessionFactory() : SessionFactory
+ merge(entity : E extends BaseEntity) : E extends BaseEntity
+ persist(entity : E extends BaseEntity)
}
}
package com.iluwatar.servicelayer.magic {
interface MagicService {
+ findAllSpellbooks() : List<Spellbook> {abstract}
+ findAllSpells() : List<Spell> {abstract}
+ findAllWizards() : List<Wizard> {abstract}
+ findWizardsWithSpell(String) : List<Wizard> {abstract}
+ findWizardsWithSpellbook(String) : List<Wizard> {abstract}
}
class MagicServiceImpl {
- spellDao : SpellDao
- spellbookDao : SpellbookDao
- wizardDao : WizardDao
+ MagicServiceImpl(wizardDao : WizardDao, spellbookDao : SpellbookDao, spellDao : SpellDao)
+ findAllSpellbooks() : List<Spellbook>
+ findAllSpells() : List<Spell>
+ findAllWizards() : List<Wizard>
+ findWizardsWithSpell(name : String) : List<Wizard>
+ findWizardsWithSpellbook(name : String) : List<Wizard>
}
}
package com.iluwatar.servicelayer.wizard {
class Wizard {
- id : Long
- name : String
- spellbooks : Set<Spellbook>
+ Wizard()
+ Wizard(name : String)
+ addSpellbook(spellbook : Spellbook)
+ getId() : Long
+ getName() : String
+ getSpellbooks() : Set<Spellbook>
+ setId(id : Long)
+ setName(name : String)
+ setSpellbooks(spellbooks : Set<Spellbook>)
+ toString() : String
}
interface WizardDao {
+ findByName(String) : Wizard {abstract}
}
class WizardDaoImpl {
+ WizardDaoImpl()
+ findByName(name : String) : Wizard
}
}
package com.iluwatar.servicelayer.spellbook {
class Spellbook {
- id : Long
- name : String
- spells : Set<Spell>
- wizards : Set<Wizard>
+ Spellbook()
+ Spellbook(name : String)
+ addSpell(spell : Spell)
+ getId() : Long
+ getName() : String
+ getSpells() : Set<Spell>
+ getWizards() : Set<Wizard>
+ setId(id : Long)
+ setName(name : String)
+ setSpells(spells : Set<Spell>)
+ setWizards(wizards : Set<Wizard>)
+ toString() : String
}
interface SpellbookDao {
+ findByName(String) : Spellbook {abstract}
}
class SpellbookDaoImpl {
+ SpellbookDaoImpl()
+ findByName(name : String) : Spellbook
}
}
package com.iluwatar.servicelayer.spell {
class Spell {
- id : Long
- name : String
- spellbook : Spellbook
+ Spell()
+ Spell(name : String)
+ getId() : Long
+ getName() : String
+ getSpellbook() : Spellbook
+ setId(id : Long)
+ setName(name : String)
+ setSpellbook(spellbook : Spellbook)
+ toString() : String
}
interface SpellDao {
+ findByName(String) : Spell {abstract}
}
class SpellDaoImpl {
+ SpellDaoImpl()
+ findByName(name : String) : Spell
}
}
package com.iluwatar.servicelayer.app {
class App {
- LOGGER : Logger {static}
+ App()
+ initData() {static}
+ main(args : String[]) {static}
+ queryData() {static}
}
}
MagicServiceImpl --> "-wizardDao" WizardDao
MagicServiceImpl --> "-spellbookDao" SpellbookDao
MagicServiceImpl --> "-spellDao" SpellDao
Spellbook --> "-spells" Spell
Spellbook --> "-wizards" Wizard
DaoBaseImpl ..|> Dao
MagicServiceImpl ..|> MagicService
Spell --|> BaseEntity
SpellDao --|> Dao
SpellDaoImpl ..|> SpellDao
SpellDaoImpl --|> DaoBaseImpl
Spellbook --|> BaseEntity
SpellbookDao --|> Dao
SpellbookDaoImpl ..|> SpellbookDao
SpellbookDaoImpl --|> DaoBaseImpl
Wizard --|> BaseEntity
WizardDao --|> Dao
WizardDaoImpl ..|> WizardDao
WizardDaoImpl --|> DaoBaseImpl
@enduml