Why I like MyBatis compared to the other ORM solutions that I have tried.
Bullsfirst is a sample trading system that demonstrates how technology can be used to solve real world problems. It is a system of medium complexity whose domain is reasonably easy to understand.
Series summary and references
The Domain layer is the heart of the application. It consists of entities, value objects, domain services and domain events.
Creating applications that can handle very complex tasks requires separation of concerns. This is where the concept of a Layered Architecture comes in.
Command-Query Separation is an approach to simplify designs and improve performance by separating reads from writes. The approach recommends that every method should either be a Command or a Query, but not both.
The sheer volume of concepts on a large project can be daunting. We must divide large domains into smaller manageable models, each of which is bounded within a context.
The domain model uses the Ubiquitous Language to provide a rich, visual view of the domain. It primarily consists of entities and their relationships.
When we design a new system, it's critical that everyone clearly understands the domain and the business problem we're trying to solve. The first step towards this goal is to establish a common language that everyone understands. This language should be rooted in the terminology used by the domain experts and your customers. In DDD, this is known as the Ubiquitous Language because everyone on the team should be using it.
Domain-Driven Design (DDD) is an approach for building high-quality products that meet the needs of a business and its customers. It emphasizes collaboration among domain experts, product managers, designers, engineers, and other disciplines to create a domain model that reflects these needs.