Abhi
Abhi

Reputation: 41

When to use Entity and when DTO?

So I'm working with Apache beam with SpringBoot, and with JDBCIO in .query I'm retrieving records from table "customer" (select * from records.customer where customer_code = "abc").So this "customer" class should be an entity or a DTO ?

My understanding is we need an entity only when we are working with repositories. Correct me if I'm wrong.

Upvotes: 3

Views: 5530

Answers (3)

Shina
Shina

Reputation: 1

we can use an Entity when working directly with database operations and repositories, and we can use a DTO for transferring data between different layers or components of our application.

Upvotes: 0

João Dias
João Dias

Reputation: 17460

You would use an Entity while dealing with a JPA Repository. The thing to keep in mind is that an Entity is basically a representation of your Database and thus, for example with Hibernate (a JPA implementation), every change you in an Entity data will be at some point persisted in the database. This might be exactly what you need and want or maybe it is not and you must be cautious. Imagine that you share Entities between two different Service classes and one of them make changes to it, effectively having side-effects. This is usually a source of bugs.

A DTO (Data Transfer Object) is usually used to expose your Entities via a REST API. If you would use Entity itself, you might get in trouble when Jackson tries to serialize the object to JSON. You might as well see code that actually uses DTOs to communicated between Services. This usually reduces the possibility of bugs (as described earlier) but it also makes your code more complex and might make it hard to achieve some use cases.

Upvotes: 4

thatGuy
thatGuy

Reputation: 88

You could use either one of them depending on your domain. Entities are used to go with your domain scope. It applies "behavior". DTO(Data Transfer Object) are used to transfer data from one process/module to a another.

Upvotes: 1

Related Questions