转载

Memory —— 超轻量级 Java 持久化工具

5月23日 西安 OSC 源创会开始报名啦,存储、虚拟机、Docker 等干货分享

从 JDBC的规范 上看,其对数据访问层有相当简洁的抽象:1、连接(connection) 2、语句(statement)、3结果集(result set),我们对数据库做的事情无非:连接数据库,执行语句,拿到结果。 因此,持久化工具的目的不言自明: 进一步简化连接的管理、语句的执行、结果集提取等操作。

Memory在设计与实现上,都借鉴了Dbutils,其相对于hibernate,mybatis这些庞然大物,已经是一个极其小巧的工具。 但是Memory的类和接口更少(不超过10个),体积更小(只有二十几K),数目和体积都约为dbutils的1/3 ,却添加了非常实用的功能:

  • 将简单的POJO对象直接持久化到数据库中;

  • 打印运行时出错的SQL语句,其可以直接拷贝到数据库客户端上进行调试;

  • 直截了当的分页查询。

代码示例:

public static void testCrud() throws SQLException {  /**  * 创建一条记录  */  Product product = new Product();  product.setName("apple");  product.setStock(10);  product.setStatus(true);  product.setCreatedDate(new Date());  System.out.print("入库之前Product没有ID:");  System.out.println(product);  memory.create(Product.class, product);  /**  * 读取这条记录  */  product = memory.read(Product.class, product.getId());  System.out.print("使用CRUD的read方法读取:");  System.out.println(product);  /**  * 换一种方式读取  */  product = memory.query("select * from product where id = ?",   new BeanHandler<Product>(Product.class), product.getId());  System.out.print("使用CQRS的query方法读取:");  System.out.println(product);  /**  * 更新这条记录  */  product.setStock(15);  product.setStatus(true);  product.setCreatedDate(new Date());  memory.update(Product.class, product);  // 查看结果  product = memory.read(Product.class, product.getId());  System.out.print("查看更新结果:");  System.out.println(product);  /**  * 删除一条记录  */  memory.delete(Product.class, product.getId());  // 查看结果  product = memory.read(Product.class, product.getId());  System.out.print("查看删除结果:");  System.out.println(product); } 
正文到此结束
Loading...