腾讯面试官必问:Java到底在哪一层操作数据库?80%求职者分层全搞错!

发布时间:2026/8/3 14:16:52
腾讯面试官必问:Java到底在哪一层操作数据库?80%求职者分层全搞错! 腾讯面试官必问Java到底在哪一层操作数据库80%求职者分层全搞错前言Java后端面试基础必挂原题Java代码在哪一层操作数据库很多初学者、应届生答题非常混乱有人说 Service 操作数据库、有人说 Controller 操作数据库、有人分层完全颠倒。面试官只要听到分层混乱直接判定工程规范薄弱、不会写正规业务代码。今天这篇文章带你彻底搞懂Java标准四层架构、每层职责、数据库操作归属、错误写法、规范流程从此面试不扣分、项目不踩坑一、Java Web 标准四层架构企业统一规范从上到下严格顺序Controller 控制层Service 业务层DAO / Mapper 持久层数据访问层数据库二、标准答案面试第一句直接秒杀Java 所有数据库增删改查操作只能放在 DAO/Mapper 持久层Service 不操作数据库、Controller 绝不碰数据库三、四层架构逐层职责详解彻底分清边界1. Controller 控制层职责只负责接收请求、返回结果接收前端参数参数基础校验调用 Service 方法封装统一返回结果❌禁止写SQL、查库、操作数据库、写业务逻辑2. Service 业务层职责只负责业务逻辑、事务控制、流程编排处理业务判断事务开启/提交/回滚调用多个 Mapper 组合业务数据组装、转换✅特点Service 只调用 DAO不直接操作数据库Service 是「指挥者」不是「执行者」。3. DAO / Mapper 持久层真正操作数据库的层唯一允许写SQL、访问数据库的层级在 MyBatis 项目中就是Mapper 接口Mapper.xml 文件职责编写 SQL 语句与 MySQL 建立交互执行增删改查返回原始数据给 Service4. 数据库层存储数据、执行SQL、返回结果。四、完整请求执行链路面试必背前端 → Controller → Service → Mapper(DAO) → 数据库反向回流数据库 → Mapper → Service → Controller → 前端五、开发中高频错误写法面试扣分点❌ 错误1Controller 直接注入 Mapper 查库分层混乱、无法做事务、无法复用代码、极不规范。❌ 错误2Service 内部写 JDBC 代码、拼接SQL严重违反单一职责代码臃肿、无法维护。❌ 错误3DAO 层写业务判断DAO 只能做纯 CRUD不能有业务逻辑。六、规范代码示例一眼看懂分层Controller只调ServiceRestControllerpublicclassUserController{AutowiredprivateUserServiceuserService;GetMapping(/user/get)publicUsergetUser(Longid){returnuserService.getUserById(id);}}Service业务层不碰SQLServicepublicclassUserServiceImplimplementsUserService{AutowiredprivateUserMapperuserMapper;OverridepublicUsergetUserById(Longid){// 业务判断if(idnull||idlt;0){thrownewRuntimeException(参数非法);}// 调用持久层查库returnuserMapper.selectById(id);}}Mapper唯一操作数据库的层MapperpublicinterfaceUserMapper{UserselectById(Longid);}七、面试满分标准答案直接背诵在Java标准四层架构中数据库操作只能放在DAO/Mapper持久层。Controller只负责接收请求和响应结果Service负责业务逻辑处理和事务管理不直接操作数据库DAO/Mapper层专门负责执行SQL、与数据库交互是唯一允许操作数据库的层级。标准执行流程是Controller调用ServiceService调用Mapper由Mapper完成数据库CRUD操作。总结记住一句终极口诀Controller管请求Service管业务Mapper管数据库只要不乱层你的代码就是企业级规范代码面试分层题直接满分