A very good question, and you are definitely on the right track!
Being a software engineer himself, databases and code writing methods for interacting with databases were also not a big part of my university degree, and I am sure that I am responsible for all the database code at work.
Here is my experience using outdated technologies from the beginning of the 90s on one project and modern technologies with C # and WPF on another.
I will do my best to explain the terminology while I go, but of course I am not an expert yet.
Tables, Objects, and Mappings Oh My!
The database contains tables, but what really? This is just flat data associated with other flat data, and if you dive in and start grabbing things, they will soon become messy! Strings will be everywhere, SQL statements are repeated, records are loaded twice, etc. Therefore, it is usually recommended to represent each table record (or a collection of table records depending on their relationship) as a single entity, usually referred to as a model. This helps to encapsulate data and provide functions for maintaining and updating state.
In your publication, your Customer class will act as a Model! So, you already understood this benefit.
Now there are many tools / frameworks (LINQ2SQL, dotConnect, Mindscape LightSpeed) that will write all your model code for you. They ultimately map objects to relational tables or O / R collation, as they reference it.
As expected, when you change your database, your O / R mappings. Like you, affected, if your Client changes, you have to fix it in one place, again, why do we put things in classes. In the case of my old project, updating the models took a lot of time because there were so many, while in my new project it was a few clicks, but in the end the result is the same.
Who should know what?
In my two projects, there were two different ways of interacting objects with their tables.
In some camps, models should know everything about their tables, about how to save themselves, have direct access to the connection / session, and perform actions such as Customer.Delete() and Customer.Save() themselves.
Other camps set reading, writing, deleting, logic in the control class. For example, MySessionManager.Save( myCustomer ) . The advantage of this methodology is that it makes it easy to track changes in objects and ensure that all objects refer to the same base table record. However, its implementation is more complicated than the method of mentioning previously localized class / table logic.
Conclusion
You are on the right track, and in my opinion interacting with databases is extremely useful. I remember how my head was spinning when I first started doing research.
I would recommend experimenting a bit, launching a small project, perhaps a simple billing system, and try writing models yourself. After that, try another small project and try to use the O / R database mapping tool and you will see the difference.