Rumah >Java >javaTutorial >DTO & DAO dalam Pembangunan Perisian
DTO (Data Transfer Object) dan DAO (Data Access Object) ialah corak reka bentuk utama yang sering digunakan dalam pembangunan perisian, terutamanya dalam aplikasi berasaskan Java. Berikut ialah penjelasan bagi setiap satu dan cara ia berkaitan:
DTO (Objek Pemindahan Data):
Tujuan: DTO ialah objek ringkas yang direka untuk memindahkan data antara lapisan atau proses dalam aplikasi.
Kes Penggunaan: Ia selalunya digunakan untuk merangkum data dengan cara yang meminimumkan bilangan panggilan kaedah (dengan menggabungkan data berkaitan) dan memastikan tiada logik perniagaan yang tidak perlu berada di dalamnya.
Ciri-ciri:
Mengandungi medan untuk menyimpan data.
Tiada logik atau kaedah perniagaan kecuali getter dan setter.
Boleh bersiri untuk komunikasi rangkaian atau respons API.
Contoh DTO:
PenggunaDTO kelas awam {
nama pengguna String peribadi;
e-mel String peribadi;
// Constructor public UserDTO(String username, String email) { this.username = username; this.email = email; } // Getters and setters public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }
}
DAO (Objek Akses Data):
Tujuan: DAO bertanggungjawab untuk berinteraksi dengan pangkalan data. Ia menyediakan kaedah untuk melaksanakan operasi CRUD (Buat, Baca, Kemas Kini, Padam) pada sumber data, mengabstraksikan logik kegigihan.
Kes Penggunaan: Ia memisahkan operasi pangkalan data daripada logik perniagaan, mematuhi Prinsip Tanggungjawab Tunggal.
Ciri-ciri:
Merangkum pertanyaan SQL atau logik ORM (seperti Hibernate, JPA).
Antara muka dengan lapisan pangkalan data.
Menyediakan kaedah yang boleh digunakan semula seperti save(), findById(), delete(), dsb.
Contoh DAO:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
UserDAO kelas awam {
sambungan Sambungan peribadi;
public UserDAO(Connection connection) { this.connection = connection; } public UserDTO getUserById(int id) throws Exception { String query = "SELECT username, email FROM users WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setInt(1, id); ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { String username = resultSet.getString("username"); String email = resultSet.getString("email"); return new UserDTO(username, email); } return null; } public void saveUser(UserDTO user) throws Exception { String query = "INSERT INTO users (username, email) VALUES (?, ?)"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, user.getUsername()); statement.setString(2, user.getEmail()); statement.executeUpdate(); }
}
Integrasi:
Dalam aplikasi, DAO mendapatkan semula data daripada pangkalan data, menukarnya menjadi objek DTO dan menghantarnya ke lapisan lain (seperti perkhidmatan atau pengawal).
Contoh Aliran:
Lapisan Pengawal: Memanggil Lapisan Perkhidmatan.
Lapisan Perkhidmatan: Berinteraksi dengan DAO untuk mengambil atau menyimpan data.
Lapisan DAO: Mengambil data, menukarnya kepada DTO dan mengembalikannya.
Contoh Kod:
// Pengawal
public UserDTO getUserDetails(int id) {
kembalikan userService.getUserById(id);
}
// Perkhidmatan
Public UserDTO getUserById(int id) {
kembalikan userDAO.getUserById(id);
}
Kebaikan:
DTO: Mengoptimumkan pemindahan data dan memisahkan UI atau respons API luaran daripada entiti dalaman.
DAO: Memusatkan logik akses pangkalan data, menjadikannya boleh digunakan semula dan boleh diuji.
Beri tahu saya jika anda mahukan penjelasan atau contoh yang lebih mendalam!
Atas ialah kandungan terperinci DTO & DAO dalam Pembangunan Perisian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!