I am currently reading about domain-driven design and n-tier architecture with a service layer, and comparing them to try to understand how each architecture is executed.
For n-tiers (specifically 3-tier) architectures, we have a service classes that bundle related logic together such as validation and doing operations in a system, these service classes then use a repository to deal with persistence related operations. This is straightforward
Now, when it comes to Domain Driven Design, the goal is to have both data and behavior encapsulated in a single entity (the model class)
- I thought ok, I will use an ORM to define the model class as an entity and then place the methods that act on the data within the model class but I read somewhere that it's not a good idea because ORMs have cached state and other leakages in it's abstraction that can't allow us to just assume that the data is populated correctly and can be acted upon like a POJO (I come from the java world), 
- I also thought about injecting the repository in the model class and then using it to read and write, but wouldn't that be adding persistence logic to the model, and that's something we don't want to do? 
- I read somewhere that we could use a layer of Dumb DTOs that are used to retrieve data and then pass the data form the DTOs to a higher level layer and starting from that higher level we could use our objects while being blissfully oblivious to the persistence details but this still poses the question of how will we write back the data?, who will call these DTOs and fill the data? And wouldn't that cause a lot of boilerplate code of mapping between the results of the data retrieved from the DB and filling domain objects? 
- There is also the problem of how to deal with what Domain Driven Design calls Aggregates, and how a model should deal with logic that incorporates other models in it, such as a validation rule for logical entity x that depends on the state of logical entity y 
I am really confused on how to stay faithful to object orientation when one is building say a java backend which will of course will need to access some form of persistence. Thanks in advance.
Edit: this question is not a duplicate of DDD repositories in application or domain service because that question is concerned with how to deal with persistence and repositories inside a domain service, while I am discussing persistence inside a domain model entity and discussing how to deal with persistence while avoiding a service layer or keeping it to a minimum
TL;DR How are reading and writing (persistence) handled in domain-driven design, such that the domain is as faithful to object orientation as possible, and for the code to mainly use methods that belong to classes that represent the domain instead of having a procedural-style service layer-centered architecture?

archive()operation and access to anArchiverepository. When persistence is not a part of domain, why would you need to persist an object?