문제

비슷한 질문을 보았습니다.

또한 해당 단어가 사용되는 상황을 알려주실 수 있나요?아니면 그 목적은 무엇입니까?

도움이 되었습니까?

해결책

자바빈즈

JavaBean은 다음을 따르는 클래스입니다. JavaBeans 규칙 Sun이 정의한대로.Wikipedia에는 ​​내용에 대한 꽤 좋은 요약이 있습니다. 자바빈즈 이다:

JavaBeans는 빌더 도구에서 시각적으로 조작할 수 있는 재사용 가능한 Java용 소프트웨어 구성 요소입니다.실제로 이는 특정 규칙을 준수하는 Java 프로그래밍 언어로 작성된 클래스입니다.이는 많은 객체를 단일 객체(빈)로 캡슐화하여 여러 개별 객체가 아닌 단일 빈 객체로 전달할 수 있도록 하는 데 사용됩니다.JavaBean은 직렬화 가능하고 nullary 생성자를 가지며 getter 및 setter 메소드를 사용하여 속성에 액세스할 수 있는 Java 개체입니다.

JavaBean 클래스로 작동하려면 객체 클래스가 메소드 이름 지정, 구성 및 동작에 대한 특정 규칙을 따라야 합니다.이러한 규칙을 통해 JavaBeans를 사용, 재사용, 교체 및 연결할 수 있는 도구를 가질 수 있습니다.

필수 규칙은 다음과 같습니다.

  • 클래스에는 공용 기본 생성자가 있어야 합니다.이를 통해 편집 및 활성화 프레임워크 내에서 쉽게 인스턴스화할 수 있습니다.
  • 클래스 속성은 표준 명명 규칙에 따라 get, set 및 기타 메서드(소위 접근자 메서드 및 변경자 메서드)를 사용하여 액세스할 수 있어야 합니다.이를 통해 프레임워크 내에서 Bean 상태를 쉽게 자동으로 검사하고 업데이트할 수 있으며, 그 중 다수에는 다양한 유형의 속성에 대한 사용자 정의 편집기가 포함되어 있습니다.
  • 클래스는 직렬화 가능해야 합니다.이를 통해 애플리케이션과 프레임워크는 VM 및 플랫폼과 독립적인 방식으로 Bean의 상태를 안정적으로 저장, 저장 및 복원할 수 있습니다.

이러한 요구 사항은 인터페이스를 구현하기보다는 주로 규칙으로 표현되기 때문에 일부 개발자는 JavaBeans를 특정 명명 규칙을 따르는 기존의 일반 Java 개체로 간주합니다.

포조

Plain Old Java Object(POJO)는 처음에는 단순하고 가벼운 Java 객체를 지정하기 위해 도입된 용어로, 어떠한 구현도 구현하지 않습니다. javax.ejb 헤비급 EJB 2.x(특히 Entity Bean, Stateless Session Bean은 그다지 나쁜 IMO가 아님)와 반대되는 인터페이스입니다.오늘날 이 용어는 추가 항목이 없는 단순한 개체에 사용됩니다.다시 말하지만, Wikipedia는 정의를 잘 수행합니다. 포조:

Pojo는 평범한 오래된 Java 대상의 약어입니다.이 이름은 해당 객체가 특별한 대상이 아닌 일반적인 Java 객체, 특히 엔터프라이즈 Javabean (특히 EJB 3 이전)이 아니라는 점을 강조하는 데 사용됩니다.이 용어는 2000 년 9 월 Martin Fowler, Rebecca Parsons 및 Josh Mackenzie에 의해 만들어졌습니다.

"우리는 왜 사람들이 시스템에서 일반 물건을 사용하는 것에 반대하는지 궁금해하고 단순한 물체에 멋진 이름이 부족했기 때문이라고 결론을 내 렸습니다.그래서 우리는 그들에게 하나를 주었고, 그것은 아주 잘 잡혔습니다. "

이 용어는 전화기에서 POT (일반 구 전화 서비스)와 같은 멋진 새로운 기능을 사용하지 않는 기술에 대한 이전 용어의 패턴 및 C ++에 정의되어 있지만 C 언어 기능 만 사용하는 포드 (일반 구식 데이터 구조)를 사용합니다. 및 Perl의 POD (일반적인 오래된 문서).

이 용어는 복잡한 객체 프레임 워크와 대조되는 일반적이고 쉽게 이해되는 용어가 필요하기 때문에 광범위한 수용을 얻었을 가능성이 높습니다.Javabean은 직렬화 할 수있는 Pojo이며, 관례 제작자가 없으며 Getter 및 Setter 메소드를 사용하여 속성에 액세스 할 수 있습니다.Enterprise Javabean은 단일 클래스가 아니라 전체 구성 요소 모델입니다 (EJB 3은 Enterprise Javabean의 복잡성을 줄입니다).

Pojos를 사용하는 설계가보다 일반적으로 사용되면서 Pojos에게 프레임 워크에 사용 된 기능 중 일부와 실제로 어떤 기능 영역이 필요한지에 대한 더 많은 선택을 제공하는 시스템이 발생했습니다.Hibernate와 Spring이 그 예이다.

값 개체

Value Object(VO)는 다음과 같은 객체입니다. java.lang.Integer 값을 보유합니다(따라서 값 객체).보다 공식적인 정의를 위해 나는 마틴 파울러(Martin Fowler)의 설명을 자주 참조합니다. 값 객체:

엔터프라이즈 애플리케이션 아키텍처 패턴에서 나는 값 개체를 돈이나 날짜 범위 개체와 같은 작은 개체로 설명했습니다.이들의 주요 속성은 참조 의미론보다는 값 의미론을 따른다는 것입니다.

일반적으로 동등 개념은 ID를 기반으로 하지 않고 모든 필드가 동일하면 두 값 개체가 동일하기 때문에 일반적으로 알 수 있습니다.모든 필드가 동일하더라도 하위 집합이 고유한 경우 모든 필드를 비교할 필요는 없습니다. 예를 들어 통화 개체의 통화 코드는 동등성을 테스트하는 데 충분합니다.

일반적인 경험적 방법은 값 객체가 완전히 불변이어야 한다는 것입니다.값 개체를 변경하려면 개체를 새 개체로 바꿔야 하며 값 개체 자체의 값을 업데이트할 수 없습니다. 업데이트 가능한 값 개체는 앨리어싱 문제로 이어집니다.

초기 J2EE 문헌에서는 다른 개념을 설명하기 위해 값 개체라는 용어를 사용했습니다. 데이터 전송 객체.이후 그들은 사용법을 변경하고 용어를 사용했습니다. 개체 전송 대신에.

가치 개체에 대한 더 좋은 자료를 찾을 수 있습니다. 위키 그리고 더크 릴레.

데이터 전송 객체

데이터 전송 객체(Data Transfer Object, DTO)는 EJB에 도입된 (안티) 패턴입니다.EJB에 대해 많은 원격 호출을 수행하는 대신 네트워크를 통해 전송할 수 있는 값 개체에 데이터를 캡슐화하는 것이 아이디어였습니다.데이터 전송 객체.Wikipedia에는 ​​적절한 정의가 있습니다. 데이터 전송 객체:

이전에 값 개체 또는 VO로 알려졌던 데이터 전송 개체(DTO)는 소프트웨어 애플리케이션 하위 시스템 간에 데이터를 전송하는 데 사용되는 디자인 패턴입니다.DTO는 데이터베이스에서 데이터를 검색하기 위해 데이터 액세스 개체와 함께 사용되는 경우가 많습니다.

데이터 전송 개체와 비즈니스 개체 또는 데이터 액세스 개체의 차이점은 DTO가 자체 데이터(접근자 및 변경자)의 저장 및 검색을 제외하고는 어떤 동작도 하지 않는다는 것입니다.

기존 EJB 아키텍처에서 DTO는 두 가지 목적으로 사용됩니다.첫째, 엔터티 빈이 직렬화되지 않는 문제를 해결합니다.둘째, 뷰에서 사용할 모든 데이터를 가져오고 DTO로 마샬링한 후 프레젠테이션 계층에 제어권을 반환하는 어셈블리 단계를 암시적으로 정의합니다.


따라서 많은 사람들에게 DTO와 VO는 동일한 것입니다(그러나 Fowler는 우리가 본 것처럼 VO를 다른 의미로 사용합니다).대부분의 경우 JavaBeans 규칙을 따르므로 JavaBeans이기도 합니다.그리고 모두 POJO입니다.

다른 팁

DTO 대 VO

dto- 데이터 전송 객체는 계층과 계층 사이의 데이터를 전송하는 데 사용되는 데이터 컨테이너입니다.

  • 주로 속성이 포함되어 있습니다. getters와 setters없이 공개 속성을 사용할 수도 있습니다.
  • 데이터 전송 개체에는 비즈니스 로직이 포함되어 있지 않습니다.

유추:
속성 사용자 이름, 비밀번호 및 이메일 ID가있는 간단한 등록 양식.

  • 이 양식이 registrationservlet 파일로 제출되면 뷰 계층에서 비즈니스 계층으로 모든 속성을 가져옵니다. 여기서 속성을 Java Beans로 전달한 다음 DAO 또는 지속성 계층으로 전달합니다.
  • DTO는 속성을 뷰 계층에서 비즈니스 계층으로 전송하는 데 도움이됩니다.

DTO는 주로 네트워크를 가로 질러 데이터를 효율적으로 전송하는 데 사용되었으며 JVM에서 다른 JVM까지 일 수 있습니다.

DTO는 종종 있습니다 java.io.Serializable -JVM에서 데이터를 전송하기 위해.

VO- 값 객체 [1] [2]는 자체가 고정 된 데이터 세트를 나타내고 Java Enum과 유사합니다. 가치 객체의 정체성은 객체 정체성보다는 상태에 근거하며 불변입니다. 실제 예제는 색상, red, color.blue, sex.female 등입니다.

Pojo vs Javabeans

1] Pojo의 Java-Beanness는 개인 속성이 모두 Javabeans 컨벤션을 준수하는 공개 게터 및 세터를 통해 액세스한다는 것입니다. 예를 들어

    private String foo;
    public String getFoo(){...}
    public void setFoo(String foo){...}; 

2] Javabeans는 직렬화 가능한 구현해야하며 연락이없는 생성자가 있어야하는 반면 Pojo에는 이러한 제한이 없습니다.

원래,

DTO : "데이터 전송 객체"는 소프트웨어 아키텍처에서 별도의 레이어 사이를 이동할 수 있습니다.

VO : "Value Objects"정수, 돈 등과 같은 물체를 잡습니다.

Pojo : 특별한 대상이 아닌 평범한 오래된 Java 객체.

Java Beans : 필요합니다 Java Class 직렬화 할 수 있으려면 a no-arg 각 필드에 대한 생성자 및 게터 및 세터

자바 콩은 EJBS와 같은 것이 아닙니다.

그만큼 Javabeans 사양 Java에서 1.0은 VB처럼 보이는 IDE에서 Java 물체를 조작 할 수 있도록 Sun의 시도였습니다. "Java Beans"로 자격을 갖춘 물건에 대한 규칙이있었습니다.

  1. 기본 생성자
  2. 적절한 이름 지정 컨벤션에 이어 개인 데이터 구성원을위한 게터 및 세터
  3. 직렬화 가능
  4. 내가 잊고있는 다른 사람들 일 수도 있습니다.

EJBS는 나중에왔다. 분산 구성 요소와 트랜잭션 모델을 결합하여 스레드, 풀링, 수명주기 및 서비스를 제공하는 컨테이너로 실행됩니다. 그들은 자바 콩과는 거리가 멀다.

사람들이 EJB 1.0 사양이 데이터베이스와 너무 "채팅"이라는 것을 알았 기 때문에 DTO는 Java 맥락에서 시작되었습니다. 사람들은 모든 데이터 요소에 대한 왕복을 만들지 않고 대량으로 자바 콩에 포장하여 주위를 배송합니다.

Pojos는 EJB에 대한 반응이었습니다.

포조 : 다른 Java 파일 (클래스)을 확장하거나 구현하지 않는 Java 파일 (클래스)입니다.

: 모든 변수가 비공개 인 Java 파일 (클래스)입니다. 메소드는 공개적이고 적절한 getters 및 세터가 변수에 액세스하는 데 사용됩니다.

일반 클래스: 공개/개인/기본/보호 변수로 구성 될 수 있으며 다른 Java 파일 (클래스)을 확장하거나 구현할 수있는 Java 파일 (클래스)입니다.

먼저 이야기하십시오

일반 클래스 - 즉, 모든 클래스는 Java에서 일반적으로 정의하는 것을 의미합니다. 다른 유형의 메소드 속성을 생성한다는 의미입니다. 등.
콩 - 콩은 아무것도 아닙니다.이 콩을 사용하여 특정 클래스의 개체 일뿐입니다..

그리고 그 후 마지막 Pojo에 대한 이야기

포조 - 포조 서비스가없는 클래스는 기본 생성자와 사유 자산 만 있으며 해당 세터 및 getter 메소드를 설정하기위한 속성이 있습니다. 짧은 형태의 일반 자바 물체입니다.

  • 가치 객체 : 객체의 값에 따라 물체의 평등을 측정 해야하는 경우 사용하십시오.
  • 데이터 전송 객체 : 원격 서버에 대한 여러 통화를 피하기 위해 클라이언트에서 서버로 한 번의 샷으로 여러 속성이있는 데이터를 전달합니다.
  • 평범한 오래된 자바 물체 : 그것은 속성, 공개 비 아그 생성자의 간단한 클래스와 같습니다. JPA 엔티티를 선언 할 때.

차이 가운 값-값-객체-패턴 및 데이터 트랜스퍼 패턴

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top