Memory 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Memory 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开发厂商
地区 国产
提 交 者 时与光
适用人群 未知
收录时间 2015-05-17

软件简介

memory : 一个比dbutils更小巧、好用的的持久化工具。

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

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

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

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

  • 直截了当的分页查询。

代码示例:

 public static void testCrud() {
     /**
     * 创建一条记录
     */
     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);
 }
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (18)

加载中
打分: 力荐
不错
2017/02/25 12:28
回复
举报
最好是借鉴sql2o,还能兼容多种数据库,dbutile太老了 #Memory#
2015/05/18 07:58
回复
举报
不知道在兼容其他数据库方面怎么样 #Memory#
2015/05/18 08:56
回复
举报
值得尝试下 #Memory#
2015/05/18 09:31
回复
举报
memory #Memory#
2015/05/18 09:35
回复
举报
放到github上兴许关注的人会多些 #Memory#
2015/05/18 09:43
回复
举报
时与光软件作者
先放在github上上,https://github.com/bitprince,应红薯老大的要求,也放在gitosc上。memory数据库兼容方面,仅在mysql和oracle项目用过。 #Memory#
2015/05/18 09:51
回复
举报
性能如何啊 #Memory#
2015/05/18 11:18
回复
举报
轻量级,限定应用场景,性能要求不要太多了,相对好点就行了, #Memory#
2015/05/18 12:13
回复
举报
postgresql,DB2,Sybase,SQL Server这些主流数据库要尽快支持 #Memory#
2015/05/18 12:33
回复
举报
更多评论
暂无内容
发表了博客
08/18 12:33

out of memory

想要成为架构师, 要是连内存泄露都解决不了, 那你还不够格, 回家再练练吧. java的内存泄露, 基本大家在工作中基本都会用到, 作为一个运维开发出生的人, 还记得以前总是给我们的架构师抓取内存文件heap.bin, 而自己其实是真的没有好好研究过怎么查看或者分析这个文件的, 我觉得有些人也是懵逼的, 并不知道具体如何来查看具...

0
0
发表了博客
2019/04/06 23:21

storage和memory

memory:使用的是值传递,默认使用的是memory,传递的是值 storage:引用传递,传过来的是指针,后面一定要加上internal,private pragma solidity ^0.4.4; contract Person { string _name; //一个构造函数 function Person(string name) { _name=name; } function f() { modify(_name...

0
0
发表了博客
2015/11/10 10:57

How Memory is being used

To determine what plans are in the cache and how often they're used we can use sys.dm_os_memory_cache_counters dm view . SELECT TOP 6 LEFT([name], 20) as [name], LEFT([type], 20) as [type], [single_pages_kb] + [multi_pages_kb] AS cache_kb, [entries_count] FROM sys.dm_os_memory_cache_cou...

0
0
发表了博客
2015/03/16 17:13

Addressing in the Memory

Posted on April 15, 2013 by GuruKPO Each instruction needs data on which it has to perform the specified operation. The data may be in the accumulator, GPR (general purpose registers) or in some specified memory location. The techniques of specifying the address of the data are known as addressin...

0
0
发表了博客
2012/05/24 10:19

Memory Management

Page Frame Management Page Descriptors The kernel must keep track of the status of each page frame. /* * Each physical page in the system has a struct page associated with * it to keep track of whatever it is we are using the page for at the * moment. Note that we have no way to track which tasks...

0
1
发表了博客
2018/06/17 17:54

.net下的span和memory

.net core 2.1的重头戏就是性能,其中最重要的两个类就是span和memory,本文这里简单的介绍一下这两个类的使用。 什么是 Span<T> Span<T> 是新一种新值类型。它表示一段连续的区域,它通常和数组关联,表示数组中的一部分内存。 var arr = new byte[10]; Span<byte> bytes = arr; 也可以取数组中的一部分: var bytes = ...

0
0
发表于游戏开发专区
2014/04/14 12:48

memory小游戏

memory

0
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/01/19 22:29

每个新线程可能需要多少配套内存???

今天看到篇博客提到以下内容: "在 Java™ 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。" 想咨询下,每个新线程可能需要2MB的配套内存依据是什么???

4
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
18 评论
290 收藏
分享
返回顶部
顶部