2016-08-08 30 views
1

Für die API-Anwendungsentwicklung mit Spring Boot und Hibernate unter Java 8 müssen die Bean-Objektwerte (z. B. bookId, bookName, bookDescription) in db gespeichert werden. Bitte entnehmen Sie die BeispielklassenWelches ist der beste Weg, um Request-Bean-Objekte dem Hibernate-Domain-Model-Objekt zuzuordnen?

BeanObject.java

package com.example; 

public class BeanObject { 

    private String bookId; 
    private String bookName; 
    private String bookDescription; 

    /** 
    * @return the bookId 
    */ 
    public String getBookId() { 
     return bookId; 
    } 
    /** 
    * @param bookId the bookId to set 
    */ 
    public void setBookId(String bookId) { 
     this.bookId = bookId; 
    } 
    /** 
    * @return the bookName 
    */ 
    public String getBookName() { 
     return bookName; 
    } 
    /** 
    * @param bookName the bookName to set 
    */ 
    public void setBookName(String bookName) { 
     this.bookName = bookName; 
    } 
    /** 
    * @return the bookDescription 
    */ 
    public String getBookDescription() { 
     return bookDescription; 
    } 
    /** 
    * @param bookDescription the bookDescription to set 
    */ 
    public void setBookDescription(String bookDescription) { 
     this.bookDescription = bookDescription; 
    } 
} 

DomainObject.java

/** 
* 
*/ 
package com.example; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Table; 

/** 
* @author pandiaraj 
* 
*/ 
@Entity 
@Table(name = "BOOKS") 
public class DomainObject { 

    private String bookId; 
    private String bookName; 
    private String bookDescription; 

    /** 
    * @return the bookId 
    */ 
    @ID 
    @Column(name = "ID", unique = true, nullable = false, length = 100) 
    public String getBookId() { 
     return bookId; 
    } 
    /** 
    * @param bookId the bookId to set 
    */ 
    public void setBookId(String bookId) { 
     this.bookId = bookId; 
    } 
    /** 
    * @return the bookName 
    */ 
    @Column(name = "NAME", length = 30) 
    public String getBookName() { 
     return bookName; 
    } 
    /** 
    * @param bookName the bookName to set 
    */ 
    public void setBookName(String bookName) { 
     this.bookName = bookName; 
    } 
    /** 
    * @return the bookDescription 
    */ 
    @Column(name = "DESCRIPTION", length = 30) 
    public String getBookDescription() { 
     return bookDescription; 
    } 
    /** 
    * @param bookDescription the bookDescription to set 
    */ 
    public void setBookDescription(String bookDescription) { 
     this.bookDescription = bookDescription; 
    } 

} 

die einfach ist und beste Weg, um die Anfrage Objektwerte abbildet DAO-Objekt (Domänenmodell) in den Ruhezustand, Eine Einrückung ist der schnellste Weg, um eine Codezeile auszuführen. Dies bedeutet eine Verkürzung der API-Antwortzeit. Wir folgten unter Möglichkeiten

  1. Verwenden von Getter und Setter-Methoden.
  2. Verwenden von Apache Commons - BeanUtils.copyProperties (toBean, fromBean);

Gibt es noch andere Möglichkeiten, um die Objekte zuordnen!

Antwort

0

Wie ich weiß, Java hat mehrere Mapping-Frameworks. Ich persönlich habe Erfahrung mit Dozer Mapping. Sie können auch überprüfen this article. Aber ich nehme an, dass all diese Frameworks Reflektion verwenden und langsamer als Setter/Getter-Aproach sein können.

Aber all diese Frameworks können Sie besser liefern Visualisierung, welche Felder abgebildet werden. Und reduse Anzahl der Builder oder Mapper-Klassen :)

0

BeanUtils.copyProperties verwendet Reflektion, die nicht wirklich gut für die Leistung. Sie finden dies in der Java-Dokumentation:

Hilfsprogramme zum Füllen von JavaBeans-Eigenschaften über Reflektion.

Was Sie tun können, ist Builder-Muster anstelle von Getter/Setter zu verwenden. Es wird viel besser in Bezug auf die Leistung sein. Um mehr darüber zu erfahren, empfehle ich Ihnen dringend, "Effektive Java" von Joshua Bloch zu lesen.

Dokumentation:

BeanUtils: https://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanUtils.html

Reflection Leistung: Java Reflection Performance

Builder Muster: http://www.informit.com/articles/article.aspx?p=1216151&seqNum=2