title: DTO to Entity And Entity to DTO
body: <p>We're to use DTO's to send data to and from the presentation layer.
  We have layers like:</p>
  
  <ul>
  <li>facade</li>
  <li>appService</li>
  <li>domain</li>
  </ul>
  
  <p>And We have use Dozer to help us convert entity to dto. 
  But i have 2 question now:</p>
  
  <ol>
  <li>from entity to dto we can use dozer, but from dto to entity can we use dozer? If Yes, How?</li>
  <li>Where shoud i create entity? in facade or DTOAssembler? </li>
  </ol>
  
  <p>for example,I have to register a book. the book Entity look's like:
  </p>
  
  <pre><code>Book{
     public Book(BookNumber number,String name){
        //make sure every book has a business number,
        //and the number can't change once the book is created.
        this.bookNumber = number;
        ..
     }
  }
  </code></pre>
  
  <p>and we hav a DTOAssembler:</p>
  
  <pre><code>BookDTOAssembler{
  
    BookDTO toDAO(bookEntity){
    ...
    }
    BookEntiy fromDTO(book DTO,BookRepository bookRepository){
      //1.Where should i create book entity? 
      //2.Is there any effective way to convert dto to entity in java world?
    }
  }
  </code></pre>
  
  <p><strong>option 1</strong></p>
  
  <pre><code>the BookManagedFacade has a registerBook function:
  public registerBook(bookDTO){
     Book book = BookDTOAssembler.fromDTO(book DTO);
  }
  
  //Create book in BookDTOAssembler.fromDTO 
  public static BookEntiy fromDTO(BookDTO bookDTO,BookRepository bookRepository){
      //book is never registered 
      if (0==bookDTO.getBookID()){
         Book book = new Book(bookRepository.generateNextBookNumber(),bookDTO.getName());
      }else{
         //book is been registed so we get it from Repository
         book = bookRepository.findById(bookDTO.getBookID()); 
      }
      book.setAuthor(bookDTO.getAuthor);
      ...
      return book;
  }
  </code></pre>
  
  <p><strong>option 2</strong></p>
  
  <pre><code>the BookManagedFacade has a registerBook function:
  public registerBook(bookDTO){
     Book book = new Book(bookRepository.generateNextBookNumber(),bookDTO.getName());
     book = BookDTOAssembler.fromDTO(book DTO,book);
  }
  
  //add another function in BookDTOAssembler.fromDTO 
  public static BookEntiy fromDTO(BookDTO bookDTO,Book book){
      book.setAuthor(bookDTO.getAuthor);
      ...
      return book;
  }
  </code></pre>
  
  <p>With one is better? Or It can be implemented in a better way..?</p>