2016-06-23 3 views
-1

Я просто пытаюсь найти, какой подход лучше подходит для копирования данных с одного объекта на другой. Вы можете найти код нижеBeanUtils.copyProperties() или используйте setter() для копирования значений

Bean1:

private int id; 
private int rollnumber; 
private String name; 
private String department; 

//constructor and getter setter 

Bean2:

private int id; 
private int rollnumber; 
private String name; 
private String dob; 
private String department; 

//constructor and getter setter 

У меня есть эти два класса. Теперь, основной() является,

public static void main(String...args){ 
     Bean1 bean1 = new Bean1(1,1001,"",""); 
     Bean2 bean2 = new Bean2(); 
     long startTime = System.currentTimeMillis(); 
     //Copying using setter 
     bean2.setDepartment(bean1.getDepartment()); 
     bean2.setDob(null); 
     bean2.setId(bean1.getId()); 
     bean2.setName(bean1.getName()); 
     bean2.setRollnumber(bean1.getRollnumber()); 
     System.out.println("total time "+(System.currentTimeMillis()-startTime)); 
    } 

В этом подходе, разница во времени очень меньше по сравнению с приведенной ниже кода, который использует BeanUtils.copyProperties.

public static void main(String...args){ 
     Bean1 bean1 = new Bean1(1,1001,"",""); 
     Bean2 bean2 = new Bean2(); 
     long startTime = System.currentTimeMillis(); 

     BeanUtils.copyProperties(bean1, bean2); 

     System.out.println("total time "+(System.currentTimeMillis()-startTime)); 
    } 

Любой пожалуйста, предложите мне, какой подход лучше в проекте в организации.


Спасибо заранее!

+1

лучший подход - хранить ваши ** важные объекты, используя 'constructor' и отдыхать, используя' setter' ** – emotionlessbananas

ответ

0
  • Я думаю, что для задачи такой простой и хорошо определены, было бы целесообразно, чтобы настройки вручную атрибутов, а не с помощью BeanUtils.copyProperties(bean1, bean2);. У вас будет больше контроля в вашем распоряжении.

  • В библиотеке Apache используется отражение, поэтому было бы намного медленнее, чем вашего ручного подхода.

.

+0

Благодарим вас за ответ. и если у меня больше свойств, таких как 100 или 100, это время было бы лучше? BeanUtils.copyProperties (bean1, bean2); или сеттер? – programmer

+0

Вы правы. –

+0

Пожалуйста, ответьте **, какой из них лучше **? в случае многих свойств? – programmer

0
BeanUtils.copyProperties(bean1, bean2); 

Использование отражения для копирования свойств bean1 в bean2, который может быть дорогостоящим. Копирование атрибутов с помощью setter позволит вам сделать правильный код, но будет более эффективным.

+0

спасибо за ответ. и стоимость измеряется во времени? или распределения памяти? – programmer

+0

Стоимость здесь измеряется во времени. –