Kiến thức

Dùng record hay class + Lombok? 04 tháng 04, 2022 – 8 lượt xem Spring Boot Java Đầu mục bài viết Bài viết liên quan Khoá học hay

Bài viết này san sẻ sự dị biệt giữa lớp + chú giải Lombok với bản ghi. Record là 1 từ khóa mới hiện ra từ JDK 16.

Bất kỳ người nào đã lập trình Spring Boot đều biết tới thư viện Lombok. Lombok giúp lập trình viên không hề viết mã lặp lại (mã Boilerplate)

public class Book {
private String id;
private String title;
private List<String> authors;
private int pages;
public Book(String id, String title, List<String> authors, int pages) {
    this.id = id;
    this.title = title;
    this.authors = authors;
    this.pages = pages;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public List<String> getAuthors() {
    return authors;
}
public void setAuthors(List<String> authors) {
    this.authors = authors;
}
public int getPages() {
    return pages;
}
public void setPages(int pages) {
    this.pages = pages;
}
}

Lombok hiện ra mọi thứ phát triển thành ngăn nắp hơn rất nhiều

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Book {
private String id;
private String title;
private List<String> authors;
private int pages;
}

@Data

Chú giải này chỉ vận dụng cho lớp và trong giai đoạn lập trình, hãy sửa đổi mã nguồn RetentionPolicy.SOURCE

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)

@Data sẽ tạo mã nguồn cho getter, setter, toString, equals, hashCode. bí quyết

@AllArgsConstructor

Tạo phương thức khởi tạo với các thông số ko đầy đủ tương ứng với các tính chất của lớp

@NoArgsConstructor

Tạo 1 phương thức khởi tạo mặc định ko chứa bất cứ thông số nào.

@Builder

Cho phép bạn tạo các nhân vật bằng cách khởi tạo từng tính chất phê chuẩn các hàm nối chuỗi

Book book = Book.builder()
.id("OX-13")
.title("Những người thích đùa")
.authors(List.of("Axit Nezin"))
.pages(125)
.build();

kỷ lục là 1 thay thế cho lớp học hoặc Lombok?

record là 1 từ khóa mới hiện ra từ Java JDK 16. Mục tiêu của record là tạo 1 nhân vật Java cũ chẳng thể chỉnh sửa. Hãy để tôi giảng giải

  • Ổn định: có tức là sau lúc khởi tạo, tính chất chẳng thể chỉnh sửa
  • Nhân vật Java cũ (POJO): nhân vật Java dễ dãi, cổ đại, ko có chú giải bổ sung. POJO sẽ khác với nhân vật Java được ghi lại bằng @Entity trong JPA hoặc @Controller để tạo thành 1 hạt đậu. POJO sinh ra để làm nhiệm vụ đóng gói các tính chất dữ liệu để truyền qua lại.

Nếu lớp là tầm thường, chúng ta có các phương thức getter và setter. Mà lại record sẽ chỉ có phương thức getter, bạn vẫn có thể viết các phương thức khác record. Thành ra, chúng ta chỉ có thể truyền thông số cho bản ghi tại thời khắc khởi tạo bằng phương thức khởi tạo. record bảo đảm rằng trong giai đoạn truyền qua (pass) sẽ ko cho phép mã sửa đổi nội dung của các tính chất bên trong. record sẽ rất thích hợp với môi trường lập trình đa luồng, cùng lúc. Nếu bạn đã từng nghe mẫu hình Tìm nguồn cung cấp sự kiện, bạn sẽ thấy ý nghĩa của việc tạo các bản ghi ko sửa đổi. Để sửa đổi, hãy tạo 1 bản ghi mới. Điều này giúp chúng tôi lưu lịch sử chỉnh sửa, ko chỉ tình trạng rốt cuộc.

Lúc nào sử dụng giấy má?

record chỉ nên dùng lúc đóng gói, truyền dữ liệu qua lại, nhân vật truyền dữ liệu … record Chẳng thể được sử dụng để lập mẫu hình Nhân vật trong JPA.

Hãy sử dụng nó record Đừng sợ rằng nó vẫn còn quá mới và chưa bình ổn. Mọi người đã chạy thí điểm nhàm chán trong nhiều 5, trải qua nhiều bạn dạng xem trước trước lúc phát hành chức năng này. Va thật sự record có 1 ý nghĩa chi tiết trong lập trình ấy.


Thông tin thêm

Dùng record hay class + Lombok?
04 tháng 04, 2022 – 8 lượt xem
Spring Boot Java
Đầu mục bài viết
Bài viết liên can
Khoá học hay

#Dùng #record #hay #class #Lombok04 #tháng #lượt #xem #Spring #Boot #Java #Đầu #mục #bài #viếtBài #viết #liên #quanKhoá #học #hay
[rule_3_plain] #Dùng #record #hay #class #Lombok04 #tháng #lượt #xem #Spring #Boot #Java #Đầu #mục #bài #viếtBài #viết #liên #quanKhoá #học #hay
Bài viết này san sẻ sự dị biệt giữa class + Lombok annotation với record. Record là 1 từ khoá mới hiện ra từ JDK 16.Bất cứ người nào đã lập trinh Spring Boot đều biết thư viện Lombok. Lombok tạo điều kiện cho lập trình viên không hề viết những đoạn code lặp đi lặp lại (Boilerplate code)public class Book {
private String id;
private String title;
private List<String> authors;
private int pages;
public Book(String id, String title, List<String> authors, int pages) {
this.id = id;
this.title = title;
this.authors = authors;
this.pages = pages;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<String> getAuthors() {
return authors;
}
public void setAuthors(List<String> authors) {
this.authors = authors;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}

Lombok hiện ra mọi thứ phát triển thành ngăn nắp hơn nhiềuimport java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Book {
private String id;
private String title;
private List<String> authors;
private int pages;
}

@DataAnnotation này chỉ vận dụng cho class và trong khi lập trình, sửa đổi mã nguồn RetentionPolicy.SOURCE@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)

@Data sẽ sinh mã nguồn các phương thức getter, setter, toString, equals, hashCode@AllArgsConstructorSinh ra constructor chưa đầy đủ các thông số tương ứng với tính chất của class@NoArgsConstructorSinh ra default constructor ko chứa bất cứ thông số nào.@BuilderCho phép bạn tạo nhân vật bằng cách khởi tạo từng tính chất qua các hàm nối chuỗi lại với nhauBook book = Book.builder()
.id(“OX-13”)
.title(“Những người thích đùa”)
.authors(List.of(“Axit Nezin”))
.pages(125)
.build();

record có thay thế cho class hay Lombok ko?record là 1 từ khoá mới hiện ra từ Java JDK 16. Mục tiêu của record là tạo ra 1 Immutable Plain Old Java Object. Để tôi giảng giải nhéImmutable: có tức là khởi tạo xong, chẳng thể chỉnh sửa được thuộc tínhPlain Old Java Object (POJO): nhân vật Java dễ dãi, cổ đại, ko có bổ xung thêm các annotation. POJO sẽ khác với nhân vật Java ghi lại bởi @Entity trong JPA hay @Controller để tạo thành bean. POJO sinh ra để làm nhiệm vụ đóng gói các tính chất dữ liệu để truyền qua lại.Ví như class thông thường, chúng ta có phương thức getter và setter. Mà record sẽ chỉ có phương thức getter, bên cạnh đó bạn vẫn có thể viết thêm các phương thức khác vào record. Tương tự chúng ta chỉ có thể truyền thông số vào record tại thời khắc khởi tạo bằng constructor. record bảo đảm rằng trong giai đoạn truyền qua lại (passing) sẽ ko cho phép code sửa đổi nội dung tính chất bên trong. record sẽ rất phù hợp với môi trường lập trình concurreny, multi-thread. Nếu bạn đã từng nghe pattern Event Sourcing thì các bạn sẽ thấy ý nghĩa của việc tạo ra các bản ghi ko được sửa đổi. Muốn sửa đổi thì tạo bản ghi mới. Việc này giúp chúng ta lưu lại lịch sử chỉnh sửa chứ ko chỉ lưu tình trạng rốt cuộc.Dùng record lúc nào?record chỉ nên dùng lúc đóng gói, truyền dữ liệu qua lại, data transfer object… record chẳng thể dùng để mẫu hình Entity trong JPA.Bạn cứ dạn dĩ dùng record chớ có ngại là nó còn quá mới, chưa bình ổn. Người ta đã chạy kiểm thử chán chê qua nhiều 5, trải qua nhiều bạn dạng preview rồi mới release chức năng này. Và thực thụ record có ý nghĩa chi tiết trong lập trình ấy bạn nhé.
#Dùng #record #hay #class #Lombok04 #tháng #lượt #xem #Spring #Boot #Java #Đầu #mục #bài #viếtBài #viết #liên #quanKhoá #học #hay
[rule_2_plain] #Dùng #record #hay #class #Lombok04 #tháng #lượt #xem #Spring #Boot #Java #Đầu #mục #bài #viếtBài #viết #liên #quanKhoá #học #hay
[rule_2_plain] #Dùng #record #hay #class #Lombok04 #tháng #lượt #xem #Spring #Boot #Java #Đầu #mục #bài #viếtBài #viết #liên #quanKhoá #học #hay
[rule_3_plain]

#Dùng #record #hay #class #Lombok04 #tháng #lượt #xem #Spring #Boot #Java #Đầu #mục #bài #viếtBài #viết #liên #quanKhoá #học #hay
Bài viết này san sẻ sự dị biệt giữa class + Lombok annotation với record. Record là 1 từ khoá mới hiện ra từ JDK 16.Bất cứ người nào đã lập trinh Spring Boot đều biết thư viện Lombok. Lombok tạo điều kiện cho lập trình viên không hề viết những đoạn code lặp đi lặp lại (Boilerplate code)public class Book {
private String id;
private String title;
private List<String> authors;
private int pages;
public Book(String id, String title, List<String> authors, int pages) {
this.id = id;
this.title = title;
this.authors = authors;
this.pages = pages;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<String> getAuthors() {
return authors;
}
public void setAuthors(List<String> authors) {
this.authors = authors;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}

Lombok hiện ra mọi thứ phát triển thành ngăn nắp hơn nhiềuimport java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Book {
private String id;
private String title;
private List<String> authors;
private int pages;
}

@DataAnnotation này chỉ vận dụng cho class và trong khi lập trình, sửa đổi mã nguồn RetentionPolicy.SOURCE@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)

@Data sẽ sinh mã nguồn các phương thức getter, setter, toString, equals, hashCode@AllArgsConstructorSinh ra constructor chưa đầy đủ các thông số tương ứng với tính chất của class@NoArgsConstructorSinh ra default constructor ko chứa bất cứ thông số nào.@BuilderCho phép bạn tạo nhân vật bằng cách khởi tạo từng tính chất qua các hàm nối chuỗi lại với nhauBook book = Book.builder()
.id(“OX-13”)
.title(“Những người thích đùa”)
.authors(List.of(“Axit Nezin”))
.pages(125)
.build();

record có thay thế cho class hay Lombok ko?record là 1 từ khoá mới hiện ra từ Java JDK 16. Mục tiêu của record là tạo ra 1 Immutable Plain Old Java Object. Để tôi giảng giải nhéImmutable: có tức là khởi tạo xong, chẳng thể chỉnh sửa được thuộc tínhPlain Old Java Object (POJO): nhân vật Java dễ dãi, cổ đại, ko có bổ xung thêm các annotation. POJO sẽ khác với nhân vật Java ghi lại bởi @Entity trong JPA hay @Controller để tạo thành bean. POJO sinh ra để làm nhiệm vụ đóng gói các tính chất dữ liệu để truyền qua lại.Ví như class thông thường, chúng ta có phương thức getter và setter. Mà record sẽ chỉ có phương thức getter, bên cạnh đó bạn vẫn có thể viết thêm các phương thức khác vào record. Tương tự chúng ta chỉ có thể truyền thông số vào record tại thời khắc khởi tạo bằng constructor. record bảo đảm rằng trong giai đoạn truyền qua lại (passing) sẽ ko cho phép code sửa đổi nội dung tính chất bên trong. record sẽ rất phù hợp với môi trường lập trình concurreny, multi-thread. Nếu bạn đã từng nghe pattern Event Sourcing thì các bạn sẽ thấy ý nghĩa của việc tạo ra các bản ghi ko được sửa đổi. Muốn sửa đổi thì tạo bản ghi mới. Việc này giúp chúng ta lưu lại lịch sử chỉnh sửa chứ ko chỉ lưu tình trạng rốt cuộc.Dùng record lúc nào?record chỉ nên dùng lúc đóng gói, truyền dữ liệu qua lại, data transfer object… record chẳng thể dùng để mẫu hình Entity trong JPA.Bạn cứ dạn dĩ dùng record chớ có ngại là nó còn quá mới, chưa bình ổn. Người ta đã chạy kiểm thử chán chê qua nhiều 5, trải qua nhiều bạn dạng preview rồi mới release chức năng này. Và thực thụ record có ý nghĩa chi tiết trong lập trình ấy bạn nhé.

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai.

Back to top button