| 層次 | 職責 | 典型類名 |
|---|---|---|
| 表現層 (UI) | 用戶交互、數據展示 | Servlet, Controller, JSP, Activity |
| 業務邏輯層 (BLL) | 業務規則、事務控制、數據校驗 | UserService, OrderManager |
| 數據訪問層 (DAL) | SQL 構建、數據庫 CRUD、連接管理 | UserDao, OrderRepository |
原則:SQL 語句屬於數據持久化細節,應封裝在 DAL 中。BLL 僅調用 DAL 方法,傳遞實體或參數,不應拼接 SQL。
// ❌ 錯誤:BLL 中拼接 SQL
public void addUser(User user) {
String sql = "INSERT INTO user(name,age) VALUES('" + user.getName() + "'," + user.getAge() + ")";
dao.executeUpdate(sql);
}
// ✅ 正確:DAL 封裝 SQL
// UserDao.java
public void insert(User user) {
String sql = "INSERT INTO user(name,age) VALUES(?,?)";
jdbcTemplate.update(sql, user.getName(), user.getAge());
}
// UserService.java (BLL)
public void register(User user) {
// 業務校驗
if (user.getAge() < 18) throw new IllegalArgumentException("未成年");
userDao.insert(user); // 僅調用 DAL
}