在 Java 持久层技术选型中,DAO 和 JPA 并不是完全对立的概念,而是处在不同抽象层次上的东西。下面从概念、区别、适用场景几个方面帮你理清。
DAO 是一种设计模式,不是具体技术。
public interface UserDao {
User findById(Long id);
void save(User user);
}
实现方式可以是:
✅ DAO 是“怎么组织代码” ❌ 不是“用什么框架”
JPA 是一种 ORM 规范(接口 + 注解),常见实现是 Hibernate。
@Entity
public class User {
@Id
private Long id;
private String name;
}
通过:
userRepository.save(user);
自动生成 SQL、映射对象。
✅ JPA 是“用什么技术访问数据库”
“DAO 和 JPA 二选一?”
❌ 不对
✅ 实际是:
例如 Spring Data JPA:
public interface UserRepository extends JpaRepository<User, Long> {
}
这本身就是 DAO 模式 + JPA 实现
适合:
优点:
缺点:
适合:
优点:
缺点:
DAO 是“架构思想”,JPA 是“实现技术”
新手优先:Spring Data JPA
复杂系统:DAO + MyBatis / JPA 混用
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。