千家信息网

Java数据库访问框架有哪些

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"Java数据库访问框架有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java数据库访问框架有哪些"吧!假设您正在开发一个Ja
千家信息网最后更新 2025年02月01日Java数据库访问框架有哪些

这篇文章主要讲解了"Java数据库访问框架有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java数据库访问框架有哪些"吧!

假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库。下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开发框架。

JDBC:简单数据库查询

最简单的办法莫过于使用JDBC提供的Java API。输入查询SQL语句调用API返回结果:

 

ResultSet rs = stmt.executeQuery("SELECT id, name FROM Employees");
while(rs.hasNext()){
log.info("Employee id: " + rs.getInt("id") + " has name: " + rs.getString("name"));
}

适用场景:不希望学新框架,要求轻量级解决方案,需自定义查询,不用长期维护;

不适合:不想写很多代码,未来可能需要做数据库迁移。

要减少模板代码,可以考虑使用jdbc-template工具,像是Spring JDBC template或者Apache DBUtils。例如在处理request时,Spring template可以用一句代码发送带参数的request,完成反序列化数据,关闭连接:

User user = jdbc.qeuryForObject("SELECT * FROM USERS WHERE ID = ?", 1, User.class);

JOOQ:面Java对象查询

JOOQ提供了一种DSL来解决查询问题。这种语言基于生成的entity对象提供编译时安全(compile-time-safe)查询。JOOQ支持不同的数据库,能够减少模板代码。

UserRecord user = new UserRecord();user.setId(1);user.setName("Peter");Result books1 = DSL.using(configuration)   .selectFrom(USERS)   .where(condition(user))   .fetch();

适用场景:要求JDBC查询保证编译时安全,迁移到不同数据库,自动生成CRUD JDBC API;

不适合:一些高级功能要收费。

MyBatis:带查询功能的简单ORM

ORM(对象关系映射)提供了另一种和数据库打交道的方式,其核心思想是把Java对象(entity)映射到对应的数据库表。MyBatis就是其中一员。

MyBatis是一个轻量级框架,使用JPA provider(非bean结构)完成映射。下面是一个简单的示例查询(不用配置文件):

// Bean映射public interface BlogMapper {3@Select("SELECT * FROM blog WHERE id = #{id}")Blog selectBlog(int id);}// 获取数据BlogMapper mapper = session.getMapper(BlogMapper.class);Blog blog = mapper.selectBlog(101);

适用场景:需要在ORM中灵活地查询,轻量级ORM;

不适合:不喜欢XML。

Hibernate与Spring Data

二者都支持JPA(Java持久化API),也就是说都支持部署到应用服务器。JPA标准中要求数据库table/column与Java对象(entity)对应。例如,USER表对应的entity如下:

@Data // 这不是hibernate注解,而是lombok getter/setter@Entity@Table(name = "USERS")public class User {@Id@Column(name = "id")private Integer id;@Column(name = "name")private String name;}

Hibernate是最受欢迎的ORM框架,提供很多开箱即用的功能。早在2001年Hibernate就发布了第一个版本。还支持HQL语言进行自定义SQL查询。

Session session = sessionFactory.openSession();User oldUser  = (User) session.get(User.class, 1); //get userUser newUser = new User(123,"John");session.save(developer); //add user//HQL 示例Query query = session.createQuery("FROM Users");List users = query.list();

适用场景:快速原型,需要内部提供缓存,使用多种不同的数据库,访问复杂schema;

不适合:不喜欢生成其他Java实体类,不愿意学习新框架,需要掌控底层细节。

Spring Data:新ORM抽象层

Spring Data在JPA entity的基础上提供了丰富的CRUD API以及查询表达式语言。其最大的优势在于只需要2-3行代码可以搞定。生成的API基于函数命名规范。

// 只需要实现CrudRepository interfacepublic interface UserRepository extends CrudRepository {User findByName(String name);User findById(long id);@Query("SELECT u.ID FROM USERS u WHERE like ?1") //自定义表达式List findByUserName(String name);}// 查询示例User johnUser = userRepository.findByName("John");User johnUser = userRepository.findById(id);List usersIdsWithOVPostfix = userRepository.findByUserName("%OV%");

总结

下面这张表进行了总结。注意:仅代表作者个人观点,没有做严谨的分析与测试。

感谢各位的阅读,以上就是"Java数据库访问框架有哪些"的内容了,经过本文的学习后,相信大家对Java数据库访问框架有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 数据库 查询 框架 代码 场景 对象 学习 支持 生成 不同 功能 示例 语言 轻量 轻量级 安全 不用 内容 办法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 一个服务器多少人上网 网络安全宣传周 答题 吃鸡有没有比较好的服务器 佛山广发银行软件开发中心 网络安全的作文1000字议论文 如何取得服务器上面的文件 班级进行网络安全教育活动 章丘智慧医养软件开发 软件开发的术和道 互联网医药的软件开发 网络安全宫保鸡丁 数据库表主键允许空吗 护苗网络安全序列课程 韩服英雄联盟更新服务器不在线 经常性出现dns服务器未响应 学习安卓软件开发需要学 济南市服务器代理哪家好 毕业设计检查数据库么 魔兽那个服务器环境好 中国十大互联网科技股 网络技术岗位主管工作职责 r操作mysql数据库 软件开发费能直接入费用吗 数据库文件格式后缀 南京 网络安全公司 网络技术资源共享什么意思 软件开发流程的方法jad 电脑有网但是软件连接不上服务器 中国十大互联网科技股 应用服务器管理找不到加密服务
0