Thuật Ngữ Java / Top 12 # Xem Nhiều Nhất & Mới Nhất 6/2023 # Top View | 2atlantic.edu.vn

Java — Thuật Ngữ Plain Old Java Object ( Pojo Là Gì, Java Pojo Là Gì

I”m not sure about the difference. I”m using Hibernate and, in some books, they use JavaBean and POJO as an interchangeable term. I want to know if there is a difference, not just in the Hibernate context, but as general concepts.

Đang xem: Pojo là gì

A JavaBean follows certain conventions. Getter/setter naming, having a public default constructor, being serialisable etc. See JavaBeans Conventions for more details.

A POJO (plain-old-Java-object) isn”t rigorously defined. It”s a Java object that doesn”t have a requirement to implement a particular interface or derive from a particular base class, or make use of particular annotations in order to be compatible with a given framework, and can be any arbitrary (often relatively simple) Java object.

Share Improve this answer Follow edited Apr 30 “16 at 23:16 answered Sep 8 “09 at 14:18

A JavaBean is a Java object that satisfies certain programming conventions:

the JavaBean class must implement either Serializable or Externalizable;the JavaBean class must have a public no-arg constructor;all JavaBean properties must have public setter and getter methods (as appropriate);all JavaBean instance variables should be private. Share Improve this answer Follow edited Sep 8 “17 at 6:39

Manu Manjunath 5,36211 gold badge2929 silver badges3030 bronze badges answered Jul 22 “14 at 11:52

The term was coined while Rebecca Parsons, Josh MacKenzie and I were preparing for a talk at a conference in September 2000. In the talk we were pointing out the many benefits of encoding business logic into regular java objects rather than using Entity Beans. We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it”s caught on very nicely.

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

pojo class is an ordinary class without any specialties,class totally loosely coupled from technology/framework.the class does not implements from technology/framework and does not extends from technology/framework api that class is called pojo class.

pojo class can implements interfaces and extend classes but the super class or interface should not be an technology/framework.

Examples :

1.

class ABC{—-}ABC class not implementing or extending from technology/framework that”s why this is pojo class.

2.

class ABC extends HttpServlet{—}ABC class extending from servlet technology api that”s why this is not a pojo class.

3.

class ABC implements java.rmi.Remote{—-}ABC class implements from rmi api that”s why this is not a pojo class.

4.

class ABC implements java.io.Serializable{—}this interface is part of java language not a part of technology/framework.so this is pojo class.

5.

class ABC extends Thread{–}here thread is also class of java language so this is also a pojo class.

6.

class ABC extends Test{–}if Test class extends or implements from technologies/framework then ABC is also not a pojo class because it inherits the properties of Test chúng tôi Test class is not a pojo class then ABC class also not a pojo class.

7.

now this point is an exceptional case

Entityclass ABC{–}Entity is an annotation given by hibernate api or jpa api but still we can call this class as pojo class.class with annotations given from technology/framework is called pojo class by this exceptional case.

Thuật Ngữ Plain Old Java Object (Pojo) Có Nghĩa Là Gì?

Đối tượng Java cũ đơn giản Tên được sử dụng để nhấn mạnh rằng đối tượng đã cho là đối tượng Java thông thường, không phải là đối tượng đặc biệt như đối tượng được xác định bởi khung EJB 2.

class A {} lớp B kéo dài/thực hiện C {}

Lưu ý: B là phi POJO khi C là loại phân lớp khung hoặc IFC. ví dụ: javax.servlet.http.HttpServlet, javax.ejb.EntityBean hoặc J2EE mở rộng và không thể tuần tự/so sánh được. Vì serializable/comparable có giá trị cho POJO.

Ở đây A là đối tượng đơn giản độc lập. B là obj đặc biệt vì B đang mở rộng/triển khai C. Vì vậy đối tượng B nhận được một số ý nghĩa từ C và B là hạn chế tuân theo các quy tắc từ C. và B là chặt chẽ cùng với với khung phân phối. Do đó đối tượng B không phải là POJO từ định nghĩa của nó.

Mã sử ​​dụng lớp Một tham chiếu đối tượng không cần phải biết bất kỳ điều gì về loại hình này và nó có thể được sử dụng với nhiều khung công tác.

Vì vậy, POJO không cần phải 1) mở rộng các lớp được xác định trước và 2) Triển khai các giao diện đã được xác định trước.

JavaBean là một ví dụ về POJO có thể tuần tự hóa, có hàm tạo không đối số và cho phép truy cập vào các thuộc tính bằng cách sử dụng các phương thức getter và setter tuân theo quy ước đặt tên đơn giản.

POJO hoàn toàn tập trung vào logic nghiệp vụ và không phụ thuộc vào khung công tác (doanh nghiệp). Nó có nghĩa là nó có mã cho logic nghiệp vụ nhưng cách thể hiện này được tạo ra, Dịch vụ nào (EJB ..) đối tượng này thuộc về và đặc điểm đặc biệt của nó (Stateful/Stateless) nó sẽ được quyết định bởi khung công tác bằng cách sử dụng bên ngoài tệp xml.

Ví dụ 1: JAXB là dịch vụ đại diện cho đối tượng java dưới dạng XML; Các đối tượng java này rất đơn giản và đi kèm với các hàm dựng và xây dựng mặc định.

Ví dụ 2: Hibernate nơi lớp java đơn giản sẽ được sử dụng để biểu diễn Bảng. cột sẽ là trường hợp của nó.

Ví dụ 3: Dịch vụ REST. Trong các dịch vụ REST chúng ta sẽ có Service Layer và Dao Layer để thực hiện một số thao tác trên DB. Vì vậy, Đào sẽ có các truy vấn và hoạt động cụ thể của nhà cung cấp. Lớp dịch vụ sẽ chịu trách nhiệm gọi lớp DAO nào để thực hiện các thao tác DB. Tạo hoặc cập nhật API (phương thức) của DAO sẽ nhận POJO làm đối số và cập nhật POJO và chèn/cập nhật vào DB. Các POJO (lớp Java) này sẽ chỉ có các trạng thái (các biến mẫu) của mỗi cột và các getters và setters của nó. Trong thực tế, một số người tìm thấy chú thích thanh lịch, trong khi họ thấy XML là tiết, xấu xí và khó duy trì, nhưng những người khác lại tìm thấy chú thích gây ô nhiễm cho mô hình POJO. Như vậy, như là một thay thế cho XML, nhiều khung (ví dụ như Spring, EJB và JPA) cho phép chú thích để được sử dụng thay hoặc bổ sung cho XML:

Ưu điểm: Kết nối cho cặp mã ứng dụng từ các khuôn khổ cơ sở hạ tầng là một trong nhiều lợi ích của việc sử dụng POJO. Sử dụng POJO trong tương lai sẽ chứng minh logic nghiệp vụ của ứng dụng của bạn bằng cách tách nó khỏi các khung cơ sở hạ tầng không ổn định và không ngừng phát triển. Nâng cấp lên phiên bản mới hoặc chuyển sang một khung công tác khác trở nên dễ dàng hơn và ít rủi ro hơn. POJO cũng làm cho việc thử nghiệm dễ dàng hơn, giúp đơn giản hóa và tăng tốc phát triển. logic kinh doanh của bạn sẽ được rõ ràng hơn và đơn giản hơn bởi vì nó sẽ không được rối với các mã cơ sở hạ tầng

Thuật Ngữ Plain Old Java Object (Pojo) Có Nghĩa Chính Xác Là Gì?

Đối tượng Java Old Plain Tên được sử dụng để nhấn mạnh rằng một đối tượng đã cho là một Đối tượng Java thông thường, không phải là một đối tượng đặc biệt như các đối tượng được xác định bởi khung công tác EJB 2.

lớp A {} lớp B mở rộng/thực hiện C {}

Lưu ý: B không phải là POJO khi C là loại lớp khung phân tán hoặc ifc. ví dụ. javax.servlet.http.HttpServlet, javax.ejb.EntityBean hoặc J2EE extn và không tuần tự hóa/so sánh. Vì serializable/so sánh là hợp lệ cho POJO.

Ở đây A là đối tượng đơn giản độc lập. B là một obj đặc biệt vì B đang mở rộng/triển khai C. Vì vậy, đối tượng B có ý nghĩa hơn từ C và B bị hạn chế tuân theo các quy tắc từ C. và B là liên kết chặt chẽ với khung phân phối. Do đó đối tượng B không phải là POJO từ định nghĩa của nó.

Mã sử ​​dụng lớp Một tham chiếu đối tượng không phải biết bất cứ điều gì về loại của nó và nó có thể được sử dụng với nhiều khung công tác.

Vì vậy, POJO không cần phải 1) mở rộng các lớp được chỉ định trước và 2) Thực hiện các giao diện được chỉ định trước.

JavaBean là một ví dụ về POJO có khả năng tuần tự hóa, có hàm tạo không có đối số và cho phép truy cập vào các thuộc tính bằng các phương thức getter và setter theo quy ước đặt tên đơn giản.

POJO hoàn toàn tập trung vào logic kinh doanh và không phụ thuộc vào các khung (doanh nghiệp) . Điều đó có nghĩa là nó có mã cho logic nghiệp vụ nhưng cách tạo đối tượng này, dịch vụ này (EJB ..) đối tượng này thuộc về cái gì và thuộc tính nào của nó các đặc tính đặc biệt (Stateful/Statless) nó sẽ được quyết định bởi các khung bằng cách sử dụng tệp xml bên ngoài.

Ví dụ 1: JAXB là dịch vụ để biểu diễn đối tượng Java dưới dạng XML; Các đối tượng Java này là đơn giản và đưa ra các getters và setters xây dựng mặc định .

Ví dụ 2: Hibernate nơi lớp Java đơn giản sẽ được sử dụng để thể hiện Bảng. cột sẽ là trường hợp của nó .

Ví dụ 3: REST dịch vụ. Trong các dịch vụ REST, chúng tôi sẽ có Lớp dịch vụ và Lớp Dao để thực hiện một số thao tác trên DB. Vì vậy, Dao sẽ có các truy vấn và hoạt động cụ thể của nhà cung cấp. Lớp dịch vụ sẽ chịu trách nhiệm gọi lớp DAO nào để thực hiện các hoạt động DB. Tạo hoặc cập nhật API (phương thức) của DAO sẽ lấy POJO làm đối số và cập nhật POJO đó và chèn/cập nhật vào DB. Các POJO này (lớp Java) sẽ chỉ có các trạng thái (biến thể hiện) của mỗi cột và các biểu đồ và setters của nó.

Trong thực tế, một số người thấy các chú thích thanh lịch, trong khi họ thấy XML là dài dòng, xấu và khó bảo trì, nhưng những người khác lại thấy các chú thích làm ô nhiễm mô hình POJO . Do đó, như là một thay thế cho XML, nhiều khung (ví dụ Spring, EJB và JPA) cho phép các chú thích được sử dụng thay thế hoặc ngoài XML:

Ưu điểm: Việc tách mã ứng dụng khỏi các khung cơ sở hạ tầng là một trong nhiều lợi ích của việc sử dụng POJO. Việc sử dụng POJO trong tương lai sẽ chứng minh logic kinh doanh của ứng dụng của bạn bằng cách tách nó khỏi các khung cơ sở hạ tầng không ổn định, liên tục phát triển. Nâng cấp lên phiên bản mới hoặc chuyển sang một khung khác trở nên dễ dàng và ít rủi ro hơn. POJO cũng làm cho việc kiểm tra dễ dàng hơn, giúp đơn giản hóa và tăng tốc phát triển. Logic kinh doanh của bạn sẽ rõ ràng và đơn giản hơn vì nó sẽ không bị rối với mã cơ sở hạ tầng

Thuật Ngữ “Dạng Chuẩn” Hoặc “Dạng Biểu Diễn Chuẩn” Trong Java Có Nghĩa Là Gì?

Một hình thức kinh điển phương tiện mà giá trị của một loại hình cụ thể của tài nguyên có thể được mô tả hay thể hiện theo nhiều cách, và là một trong những cách được chọn là hình thức kinh điển được ưa chuộng. (Biểu mẫu đó được chuẩn hóa , giống như sách đã đưa nó vào kinh thánh, còn các biểu mẫu khác thì không.) Một ví dụ cổ điển về biểu mẫu chuẩn là các đường dẫn trong hệ thống tệp phân cấp, trong đó một tệp duy nhất có thể được tham chiếu theo một số cách :

myFile.txt # in current working dir ../conf/myFile.txt # relative to the CWD chúng tôi # absolute path using symbolic links chúng tôi # absolute path with no symlinks

Định nghĩa cổ điển về biểu diễn chuẩn của tệp đó sẽ là đường dẫn cuối cùng. Với các đường dẫn cục bộ hoặc tương đối, bạn không thể xác định toàn cục tài nguyên mà không có thông tin ngữ cảnh. Với các đường dẫn tuyệt đối, bạn có thể xác định tài nguyên, nhưng không thể biết liệu hai đường dẫn có tham chiếu đến cùng một thực thể hay không. Với hai hoặc nhiều đường dẫn được chuyển đổi sang dạng chuẩn, bạn có thể thực hiện tất cả những việc trên, đồng thời xác định xem hai tài nguyên có giống nhau hay không, nếu điều đó quan trọng đối với ứng dụng của bạn (giải quyết vấn đề răng cưa ).

Lưu ý rằng dạng chuẩn của tài nguyên không phải là chất lượng của chính dạng cụ thể đó; có thể có nhiều dạng chuẩn có thể có cho một loại nhất định như đường dẫn tệp (giả sử, về mặt từ vựng trước hết là đường dẫn tuyệt đối có thể có). Một biểu mẫu chỉ được chọn làm biểu mẫu chuẩn vì một lý do ứng dụng cụ thể, hoặc có thể tùy ý để mọi người nói cùng một ngôn ngữ.

Buộc các đối tượng vào các phiên bản chính tắc của chúng là cùng một ý tưởng cơ bản, nhưng thay vì xác định một đại diện “tốt nhất” của tài nguyên, nó tùy ý chọn một phiên bản của một lớp cá thể có cùng “nội dung” với tham chiếu chính tắc, sau đó chuyển đổi tất cả các tham chiếu tới các đối tượng tương đương để sử dụng một phiên bản chuẩn.

Đây có thể được sử dụng như một kỹ thuật để tối ưu hóa cả thời gian và không gian. Nếu có nhiều bản sao của các đối tượng tương đương trong một ứng dụng, thì bằng cách buộc tất cả chúng phải được giải quyết dưới dạng bản chính tắc duy nhất của một giá trị cụ thể, bạn có thể loại bỏ tất cả trừ một trong mỗi giá trị, tiết kiệm không gian và có thể là thời gian vì bây giờ bạn có thể so sánh những giá trị có danh tính tham chiếu (==) trái ngược với tương đương đối tượng ( equals() phương thức).

Một ví dụ cổ điển về tối ưu hóa hiệu suất với các phiên bản chuẩn là thu gọn các chuỗi có cùng nội dung. Việc gọi String.intern() trên hai chuỗi có cùng chuỗi ký tự được đảm bảo trả về cùng một đối tượng Chuỗi chính tắc cho văn bản đó. Nếu bạn chuyển tất cả các chuỗi của mình qua bộ chuẩn hóa đó, bạn biết các chuỗi tương đương thực sự là các tham chiếu đối tượng giống hệt nhau, tức là bí danh

Các kiểu enum trong Java 5.0+ buộc tất cả các phiên bản của một giá trị enum cụ thể phải sử dụng cùng một phiên bản chuẩn trong một máy ảo, ngay cả khi giá trị được tuần tự hóa và giải mã hóa. Đó là lý do tại sao bạn có thể sử dụng if (day == Days.SUNDAY)với impunity trong java nếu Dayslà một kiểu enum. Làm điều này cho các lớp học của riêng bạn chắc chắn là có thể, nhưng hãy cẩn thận. Đọc Java hiệu quả của Josh Bloch để biết chi tiết và lời khuyên.