IT이야기

JavaBean과 POJO의 차이점은 무엇입니까?

cyworld 2022. 6. 13. 22:27
반응형

JavaBean과 POJO의 차이점은 무엇입니까?

차이를 잘 모르겠어요.저는 Hibernate를 사용하고 있으며, 일부 책에서는 JavaBean과 POJO를 호환 가능한 용어로 사용하고 있습니다.휴지 상태뿐만 아니라 일반적인 개념에서도 차이가 있는지 알고 싶습니다.

JavaBean은 특정 규칙을 따릅니다.getter/setter 이름 지정, 공용 기본 생성자 포함, 직렬화 가능 등자세한 내용은 JavaBeans 표기법을 참조하십시오.

POJO(Plain-old-Java-object)는 엄격하게 정의되어 있지 않습니다.특정 인터페이스를 구현하거나 특정 기본 클래스에서 파생하거나 특정 프레임워크와 호환하기 위해 특정 주석을 사용할 필요가 없는 Java 개체이며 임의의(대개 비교적 단순한) Java 개체일 수 있습니다.

모든 JavaBeans가 POJO이지만 모든 POJO가 JavaBeans인 것은 아닙니다.

JavaBean은 특정 프로그래밍 규칙을 충족하는 Java 객체입니다.

  • JavaBean 클래스는 Serialable 또는 Externalable 중 하나를 구현해야 합니다.
  • JavaBean 클래스에는 퍼블릭 no-arg 컨스트럭터가 필요합니다.
  • 모든 JavaBean 속성은 퍼블릭세터 및 getter 메서드(적절한 경우)를 가져야 합니다.
  • 모든 JavaBean 인스턴스 변수는 비공개여야 합니다.

Martin Fowler에 따르면 POJO는 Business Logic을 캡슐화하는 객체이며 Bean(다른 답변에서 이미 기술된 정의를 제외)은 데이터를 보관하는 컨테이너에 불과하며 객체에서 사용할 수 있는 작업은 단순히 데이터를 설정하고 가져오는 것에 불과합니다.

이 용어는 레베카 파슨스, 조쉬 맥켄지, 그리고 제가 2000년 9월에 열린 컨퍼런스에서 강연을 준비하고 있을 때 만들어졌습니다.강연에서 우리는 Entity Bean을 사용하는 것이 아니라 비즈니스 로직을 일반 Java 객체로 인코딩하는 것의 많은 이점을 지적했습니다.우리는 왜 사람들이 그들의 시스템에서 일반 물체를 사용하는 것을 그렇게 반대하는지 궁금했고, 그것은 단순한 물체에 화려한 이름이 없기 때문이라고 결론지었다.그래서 저희가 하나 줬는데 잘 팔리고 있어요.

http://www.martinfowler.com/bliki/POJO.html

Pojo - 플레인오래된 Java 오브젝트

pojo class는 특별한 전공이 없는 평범한 수업으로, 기술/기술과 완전히 느슨하게 결합되어 있다.class는 technology/class에서 구현되지 않으며 pojo 클래스라고 불리는 technology/class api에서 확장되지 않습니다.

pojo 클래스는 인터페이스를 구현하고 클래스를 확장할 수 있지만 슈퍼 클래스 또는 인터페이스는 기술/프로세서일 수 없습니다.

예:

1.

class ABC{
----
}

ABC 클래스는 테크놀로지/프레임워크를 구현하지 않거나 확장하지 않기 때문에 pojo 클래스입니다.

2.

class ABC extends HttpServlet{
---
}

servlet technology api에서 확장한 ABC 클래스는 pojo 클래스가 아닙니다.

3.

class ABC implements java.rmi.Remote{
----
}

ABC 클래스는 rmi api에서 구현되므로 pojo 클래스가 아닙니다.

4.

class ABC implements java.io.Serializable{
---
}

이 인터페이스는 자바 언어의 일부이며 테크놀로지의 일부가 아닙니다.framework.so 이것은 pojo 클래스입니다.

5.

class ABC extends Thread{
--
}

여기 스레드도 자바 언어 클래스이므로 이것도 pojo 클래스입니다.

6.

class ABC extends Test{
--
}

테스트 클래스가 테크놀로지/프레임워크에서 확장 또는 구현되는 경우 테스트 클래스의 속성을 상속하기 때문에 ABC 클래스도 pojo 클래스가 아닙니다.테스트 클래스가 pojo 클래스가 아닌 경우 ABC 클래스도 pojo 클래스가 아닙니다.

7.

이 점은 예외적인 경우다

@Entity
class ABC{
--
}

@Entity는 hibernate api 또는 jpa api에서 제공되는 주석이지만 이 클래스를 pojo 클래스라고 부를 수 있습니다.이 예외적인 경우 기술/기술로부터 주석이 주어지는 클래스를 pojo 클래스라고 부릅니다.

POJO: 다른 외부 서드파티 라이브러리를 지원하지 않고 기본 JDK를 사용하여 클래스를 실행할 수 있는 경우 POJO라고 합니다.

JavaBean:클래스에 액세스자(세터 및 getter)가 있는 속성만 포함되어 있는 경우 이러한 속성을 javabeans라고 합니다.Java beans는 일반적으로 비즈니스 로직을 포함하지 않고 데이터를 저장하기 위해 사용됩니다.

모든 자바인은 POJO이지만 모든 POJO는 자바인이 아닙니다.

자바 빈은 POJO의 특별한 종류입니다.

다음과 같은 전문 분야에는 이유가 있습니다.

여기에 이미지 설명 입력

요약: 유사점과 차이점은 다음과 같습니다.

   java beans:                          Pojo:
-must extends serializable              -no need to extends or implement.
 or externalizable.                     
-must have public class .               - must have public class
-must have private instance variables.      -can have any access specifier variables.
-must have public setter and getter method. - may or may not have setter or getter method.
-must have no-arg constructor.           - can have constructor with agruments.

모든 Java Bean이 POJO이지만 모든 POJO가 JAVA Bean인 것은 아닙니다.

POJOS특정 규칙(getter/setter, public no-interlic constructor, private variable)을 사용하여 동작 중(예: 폼에 의한 데이터 읽기에 사용됨)JAVABEANS.

위의 정식 정의는 이미 확인하셨지만, 그 가치는 충분합니다.

하지만 정의에 너무 집착하지 마세요.여기 사물의 의미를 좀 더 살펴봅시다.

JavaBeans는 Enterprise Java 어플리케이션에서 사용됩니다.사용자는 네트워크 경유로 서버(웹 또는 개인 네트워크 경유)에서 리모트로 데이터 및/또는 애플리케이션 코드에 자주 액세스합니다.따라서 관련된 데이터는 사용자의 컴퓨터에 직렬 형식으로 스트리밍해야 합니다. 따라서 직렬화 인터페이스를 구현하려면 Java EE 개체가 필요합니다.JavaBean의 특성 중 이 정도는 파일 시스템에서 데이터를 읽거나 쓰는 Java SE 응용 프로그램 개체와 다르지 않습니다.다양한 사용자 머신/OS 조합에서 네트워크를 통해 Java 클래스를 안정적으로 사용하려면 이러한 클래스를 처리하기 위한 규칙을 채택해야 합니다.따라서 이러한 클래스를 프라이빗 속성을 가진 퍼블릭, 인수 없는 생성자 및 표준화된 getter 및 setter로 구현해야 합니다.

Java EE 응용 프로그램은 JavaBeans로 구현된 클래스 이외의 클래스도 사용합니다.입력 데이터 처리 또는 출력 데이터 구성에는 사용할 수 있지만 네트워크를 통해 전송되는 개체에는 사용되지 않습니다.따라서 위의 고려사항을 Java 객체로 유효하다는 바에는 적용할 필요가 없습니다.이러한 후자의 클래스는 POJOs-Plain Old Java Objects라고 불립니다.

대체로 Java Bean은 네트워크를 통해 사용하기 위해 조정된 Java 객체라고 볼 수 있습니다.

1995년 이후 소프트웨어 세계에는 엄청나게 많은 광고와 적지 않은 사기극이 있었다.

모든 Pojo는 JavaBean이지만 그 반대는 아닙니다.


POJO가 뭐죠?

  1. POJO에는 속성 또는 메서드에 대한 명명 규칙이 없습니다.클래스 상태를 구성, 액세스, 수정하기 위한 실제 규칙을 따르지 않습니다.

    예제:

     public class Pojo {
    
      public String firstname;
      public String LASTName;
    
      public String name() {
         return this.firstname + " " + this.LASTName;
      }
     }
    

    서 나는 기, 가, 가를 대체할 수 .firstname타타에 first_name ★★★★★★★★★★★★★★★★★」Firstname또는 어떤 명사에 의해서도 변수와 같은LASTName.

이 용어는 복잡한 객체 프레임워크와 대조되는 공통적이고 쉽게 이해할 수 있는 용어가 필요하기 때문에 널리 받아들여지고 있을 가능성이 높다.[2]


POJO를 사용한 반사.

구성보다 규약을 선호하고 클래스 사용 방법을 이해하며 기능을 강화하는 프레임워크의 기능을 제한할 수 있습니다.[1]

  List<String> propertyNames =
                Arrays.stream(PropertyUtils.getPropertyDescriptors(Pojo.class))
                        .map(PropertyDescriptor::getDisplayName)
                        .collect(Collectors.toList());
        System.out.println(propertyNames);

PropertyUtils의 경우 수 . 왜냐하면 이것은 결과적으로

[]

자바빈이란?

JavaBean은 여전히 POJO이지만 구현 방법에 대한 엄격한 규칙 집합을 도입합니다.

  • 액세스 레벨 – 델의 자산은 비공개이며, 취득자와 설정자를 공개하고 있습니다.
  • getX - getX setX (( ( getter is X ) 。
  • Constructor:하지 않고 할 수 인수 해야 합니다.를 들어, Default Constructor –는 디시리얼라이제이션 디폴트컨스트럭터입니다.
  • Serializable – Serializable 인터페이스를 구현하면 상태를 저장할 수 있습니다.

예제:

@Getter
@Setter
 class Pojo implements Serializable {
    public String firstName;
    public String lastName;
}

Java Bean을 사용한 반사.

If we again use third party Libraries such as `PropertyUtils` for reflection the result will be different
[firstName,lastName]

언급URL : https://stackoverflow.com/questions/1394265/what-is-the-difference-between-a-javabean-and-a-pojo

반응형