permazen, Java语言自然持久层

分享于 

8分钟阅读

GitHub

  繁體 雙語
Simple and Powerful Java Persistence Layer for Key/Value Stores
  • 源代码名称:permazen
  • 源代码网址:http://www.github.com/permazen/permazen
  • permazen源代码文档
  • permazen源代码下载
  • Git URL:
    git://www.github.com/permazen/permazen.git
    Git Clone代码到本地:
    git clone http://www.github.com/permazen/permazen
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/permazen/permazen
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    Permazen是一个更好的Java持久层

    注意:已经被重命名为 Permazen

    持久性是大多数应用程序的核心。 但持久性编程涉及到存储数据的领域之外存在许多挑战。

    诸如 JDBC。JPA和JDO这样的主流Java解决方案只是为Java程序员提供了对现有数据库功能的访问,。 它们解决了"存储器"问题,但是留下了持久化编程所固有的许多其他重要问题,或者根本没有解决。

    Permazen是一种完全不同的查看持久性编程的方法。 它从存储技术方面开始,从编程语言方面开始,不问持久编程,"持久编程是如何在最简单,最正确和最自然自然自然方式的语言级别中解决的"?

    通过 Permazen,不仅解决了持久性编程的很多问题,而且还解决了传统解决方案的许多问题。

    Permazen是:

    • 用于 SQL。key-value 或者内存数据库的Java持久层
    • 严格定义,模块化的键/值 API,带有多个数据库技术的适配器
    • 一种使你的应用程序跨不同数据库技术移植的方法
    • 对象序列化框架
    • 自动化模式管理框架
    • 用于反转Java引用的库
    • 自动字段更改通知库
    • 一个可以嵌入的Java 命令行 接口( CLI )

    Permazen受到多年来持久化解决方案的挫折,特别是JPA的。 使用JPA相比,使用Permazen构建应用程序是一种令人耳目一新的直接体验。

    询问持久性解决方案的以下问题:

    • 我们需要显式配置数据的映射细节,我们需要花费的配置复杂性? 我们强制( ab ) 使用编程语言来解决真正的数据库配置问题?
    • 执行查询的查询语言索引的代码看起来像普通的Java代码,或者我们必须学习一个新的查询。
    • 查询性能透明是查询的性能,从查看执行它的代码来看,它是可见的和明显的?
    • 数据类型 congruence congruence是与整个值的整个域等效的数据库类型? 我们是否保证总是读回我们写的相同的值?
    • 从事务中复制出的数据,可以精确地定义第一类离线数据的大小? 脱机数据具有"联机"( 例如 ,事务性) 数据的所有权限和特权? 这包括查询索引的能力,以及处理模式差异的框架? 脱机数据可以轻松序列化/反序列化?
    • 架构验证是与数据库实际存在的模式相对照的架构所假设的架构? 我们是否始终保证对存储数据的一致解释?
    • 在数据库中可以同时存在增量模式演化,以支持滚动升级? 数据可以增量迁移,换句话说,而不停止世界? 我们是否可以从"整个数据库"迁移操作中自由地限制可伸缩性?
    • 架构架构更改结构更新是完全自动执行的?
    • 语义架构更改是否有一种方便的方法来指定语义模式更新,在语言级别( 不是数据库级别)?
    • 模式evolution安全类型安全和跨任意模式迁移的数据类型一致性保证?
    • 只有在事务的末尾才出现验证验证( 包括参考验证),或者在中间不方便和不容易的情况下进行
    • 交叉对象验证可以定义 span 多个对象/记录的验证约束? 是否可以为非局部对象更改数据级别通知?
    • 有可能定义自定义数据类型和索引,是否将它们编入索引? 定义任意自定义索引是否容易?
    • 可以通过Java类型。值和表达式的命令行 接口( adv。CLI ) 执行语言维护任务和查询。? 是否有方便的工具用于手动和脚本使用?
    • 我们只能使用特定类型数据库技术,以便在以后实现简单的API时,可以很容易地更改。

    Permazen地址所有这些问题,不牺牲灵活性或者规模。

    通过将数据库处理为只读排序键/值存储子对象,并在Java中实现以下方法,Permazen将实现这里目的:

    • 字段值的编码/解码
    • 参照完整性;正向/反向 delete 级联
    • 索引( 简单和复合)
    • 查询视图
    • 架构管理
    • 更改通知
    • 验证队列
    • 命令行接口
    • GUI数据库编辑器

    Permazen还添加了一些传统数据库不提供的新特性。

    Permazen幻灯片

    在一个本地Java组的本地Java小组中,查看一下这些幻灯片,看一下这些幻灯片。

    Permazen纸张

    要深入了解Permazen背后的动机和设计决策,请阅读 Permazen: Java语言的语言驱动持久性。

    摘要:

    大多数软件应用程序都需要持久持久的数据。 从程序员观点来看,持久性有自己的固有问题集,比如,如何管理模式更改,但是这种问题很少在编程语言本身中解决。 相反,我们对持久性的编程是由存储技术方面驱动的,这导致了不完整和/或者技术特定的支持来管理这些问题。

    Java中基本持久性的主流解决方案是Java持久性 API ( JPA )。 虽然流行,但它还能很好地解决许多固有问题的良好程度。 我们标识了几个示例,并将它们推广为评估程序员持久性的任何解决方案的标准。 我们介绍了Permazen的持久性层,通过集成数据编码。查询和索引函数,提供了一个更完整的。

    安装 Permazen

    Permazen可以从 Maven 中央插件中获得:

    
    
    
    
     <dependency>
    
    
     <groupId>io.permazen</groupId>
    
    
     <artifactId>permazen-main</artifactId>
    
    
     </dependency>
    
    
    
    

    或者来自 Ivy RoundUp Ivy知识库:

    
    
    
    
    <dependency org="io.permazen" name="permazen"/>
    
    
    
    

    你还应该为要使用的任何键/值存储添加键/值存储模块,e.g.:

    
    
    
    
     <dependency>
    
    
     <groupId>io.permazen</groupId>
    
    
     <artifactId>permazen-kv-mysql</artifactId>
    
    
     </dependency>
    
    
    
    

    使用一个演示分发文件,可以使用太阳能系统的简单数据库来使用 Permazen 命令行 和 GUI。

    文档

    文档和链接:


    JAVA  LAN  LANG  NAT  Layer  Persist  
    相关文章