Kotlin Springboot -- Part 6 드라이버 및 엔티티 の データクラスト インスタンスを 作り Gateway 및 Domain に変換する

5718 단어 kotlinca



드라이버 와 도메인 を返すのをやめて, 엔티티 を返すようにする.

いままでは 드라이버 で 도메인 を返していたが
criーンアーキテクチャ的には Driver が Domain にアクセスで きててはいけないから.

엔터티 とは?



データの実態.
DB から返ってくるもの.

도메인 と同じ 데이터 클래스 ではあるが

data class Persons(val list: List<Person>)
data class Person(val name: Name, val age: Age)
data class Name(val value: String)
data class Age(val value: Int)


오브젝트指向な 도메인 で作られる詳細なものと違い
こんなに最小単位迄作らなくて良い.

  data class PersonEntity(val name: String , val age: Int)


これくらいまでで良いと解釈した.


운전사




//  private val data:Persons = Persons(listOf(
//    (Person(Name("taro"), Age(12))),
//    (Person(Name("hanako"), Age(10))),
//  ))


このように갓트리드메인つけて作っいた
인메모리노데이타를

  data class PersonEntity(val name: String , val age: Int)

  val taro = PersonEntity("taro", 3)
  val hana = PersonEntity("hana", 5)
  val persons = listOf<PersonEntity>(taro,hana)


엔티티 を作って, そこからinstansでつくってまとめるようにした.

 fun findAll(): List<PersonEntity> {
    return persons
  }


そしてこれを Gateway に返す.


게이트웨이



PersonsEntity で受け取ったものを
Domain の Persons の ナ カ で 展開 し て, 도메인 の 사람 を つ け て 返 す.

これで Entity から 도메인 に変換できている.

class PersonsGateway(
  val personsDriver: PersonsDriver
) {
  fun getAllPersons():Persons {
    val persons = personsDriver.findAll()
    return Persons(persons.map { person ->
      Person(
        Name(person.name),
        Age(person.age)
      )
    })
  }
}



まとめ



인메모리로 CA をする場合は
드라이버 で Entity を 데이터 클래스 で つくり
そのインスタンスを返す.

そして 게이트웨이 에서 도메인 にして返す.

좋은 웹페이지 즐겨찾기