Skip to content

전술적 설계 - 간단한 비즈니스 로직 구현 #5

@nooose

Description

@nooose

📅 2024.08.12 - 간단한 비즈니스 로직 구현

📝 학습 내용 요약

  • 주요 주제: 비즈니스 로직을 구현하는 방법 소개

🧠 이해한 내용

  • 핵심 개념: 도메인 모델 패턴을 배우기에 앞서 비즈니스 로직 패턴의 기반인 트랜잭션 스크립트 방식과 액티브 레코드 방식을 배운다.
  • 트랜잭션 스크립트: 절차지향 스크립트 방식으로 구현한다.
@Service
class UserService(
    private val userDao: UserDao,
    private val teamDao: TeamDao
) {
    @Transactional
    fun createUserWithTeam(name: String) {
        val team = Team()
        teamDao.save(team)

        val user = User(name, team.id)
        userDao.save(user);
    }
}
  • 액티브 레코드: 데이터베이스 접근을 캡슐화하고 해당 데이터에 메인 로직을 추가한다.
  • 빈약한 도메인 모델 안티패턴이라고도 불린다.
class User(
    val name: String,
    val email: String
) {
    
    fun create() {
        save(this)
    }
    
    private fun save(user: User) {
        // DB 저장 로직
    }
}
  • 위 패턴들은 단순한 상황에서 사용이 가능하다. 로직이 복잡하다면 도메인 모델 패턴을 사용해야함

❓ 궁금한 점 및 논의할 주제

  • 질문 1: 데이터를 단순히 조회하는 상황에서는 항상 트랜잭션 스크립트 방식을 사용하는 것이 올바를까?

🔍 추가 참고 자료

🗒 기타 메모

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions