Entity

D 语言的 ORM 框架
授权协议 Apache
开发语言 D语言
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 国产
投 递 者 秦琦
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Entity 是 D 语言( DLang )数据库操作 ORM 框架,设计参照 javax JPA 实现,具有很好的扩展性和规范性,数据库驱动依赖 HuntLabs 开发的 database for dlang

特性

  1. 实现了完整的 CriteriaQuery 支持

  2. Repository 也有部分封装

  3. 完全对象化查询,不用考虑底层数据库驱动

  4. 实现 EQL(Entity Query Language)实现对象化 SQL 查询语言

支持的数据库

  • PostgreSQL 9.0+

  • MySQL 5.1+

使用示例

import hunt.entity;

@Table("users")
class User : Entity
{
    @PrimaryKey
    @AutoIncrement
    int id;

    string name;
    double money;
    string email;
    bool status;
}

void main()
{
    DatabaseOption options = new DatabaseOption("mysql://root:123456@localhost:3306/huntblog?charset=utf-8");
    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default", options);
    EntityManager em = entityManagerFactory.createEntityManager();

    // begin transaction
    em.getTransaction().begin();

    // define your database existing row id in here
    int id = 10;

    auto user = em.find!User(id);
    log("User name is: ", user.name);

    // commit transaction
    em.getTransaction().commit();

    em.close();
    entityManagerFactory.close();
}

Insert row

    auto user = new User();
    user.name = "Brian";
    user.email = "brian@huntlabs.cn";
    user.money = 99.9;
    
    // insert user
    em.persist(user);
    log("User id is: ", user.id);

Delete row

    int n = em.remove!User(id);
    log("The number of users deleted is: ", n);

Update row

    auto user = em.find!User(id);
    log("User name is: ", user.name);
    user.name = "zoujiaqing";
    em.merge!User(user);
    log("The number of users updated is: ", n);

Use CriteriaQuery to find

    // create CriteriaBuilder object from em
    CriteriaBuilder builder = em.getCriteriaBuilder();

    CriteriaQuery!User criteriaQuery = builder.createQuery!User;
    Root!User root = criteriaQuery.from();
    Predicate p1 = builder.equal(root.User.id, id);
    TypedQuery!User typedQuery = em.createQuery(criteriaQuery.select(root).where(p1));

    auto user = typedQuery.getSingleResult();

    log("User name is: ", user.name);

Use CriteriaQuery to Multi-condition find

    // create CriteriaBuilder object from em
    CriteriaBuilder builder = em.getCriteriaBuilder();

    CriteriaQuery!User criteriaQuery = builder.createQuery!User;
    Root!User root = criteriaQuery.from();

    Predicate p1 = builder.lt(root.User.id, 1000);  // User id is less than 1000.
    Predicate p2 = builder.gt(root.User.money, 0);  // User money is greater than 0.
    Predicate p3 = builder.like(root.User.name, "z%");  // User name prefix is z.

    TypedQuery!User typedQuery = em.createQuery(criteriaQuery.select(root).where(builder.and(p1, p2), p3));
    User[] users = typedQuery.getResultList();

    log("The number of users found is: ", users.length);

EQL 使用

// Example for sample SELECT
auto query = em.createQuery!(User)("SELECT u FROM User u");

foreach(user; query.getResultList())
{
	logDebug(user.name);
}

 

  • 在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法。entity(实体类)的作用一般是和数据表做映射。所以快速写出规范的entity(实体类)是java开发中一项必不可少的技能。 在项目中写实体类一般遵循下面的规范: 1、根据你的设计,定义一组你需要的私有属性。 2、根据这些属性,创建它们的setter和getter方法

  • 游戏场景中,动态创建的一切物体定义为实体。此模块提供管理实体和实体组的功能,如显示隐藏实体、挂接实体(如挂接武器、坐骑,或者抓起另一个实体)等。实体使用结束后可以不立刻销毁,从而等待下一次重新使用。 EntityGroup 内部包含对象池 实体加载成功订阅 GameEntry.Event.Subscribe(ShowEntitySuccessEventArgs.EventId, OnShowEnt

  • 起因 使用 mybatis-plus 操作后获得的数据类型为 Entity,但是前端界面往往需要展示一些其他的字段数据,此时就需要 将 Entity 转化为 Vo。 那么他们三者的关系是什么呢?面向的使用对象不同 entity: 对应数据库表模型, vo: 对应需要返回到前端的数据模型 , 通常使用于后端返回的数据类 dto: 对应后台内部调用的数据模型, 通常使用于前端传入的参数类 packag

  • 通常情况下,在前后端分离的大背景下,我们后台服务返回给前端的通常都是格式化的数据,比如Json,开始的时候,我们用json包生产一个json的字符串,配合http 协议的一些API 来自定义实现 spring发展到现在,已经都包装出来了通用的处理类:ResponseEntity ,此类继承自HttpEntity public class ResponseEntity&lt

  • 对于这些概念,网上众说纷纭。不要纠结他是什么,不要纠结DTO与VO的区别是什么。在实际编码过程中,按照你们研发组的规范来做就好了。可能你觉得划分的比较细,专业性比较强。但用处不大。 1. 概念 如下概念是我摘要解释比较合理的。望周知。 VO(View Object): 视图对象,用于展示层,这很好理解,就是页面所需数据封装。 VO(Value Object): 值对象,跟引用对象(Referenc

 相关资料
  • 从戏剧!框架文档: Play2.0中没有内置的JPA实现;您可以选择任何可用的实现。例如,要使用Hibernate,只需将依赖项添加到项目中: 我的选择是什么而不是冬眠? 你认为什么最适合留言板网站? 我知道Hibernate有一点开销,对吗?

  • 本文向大家介绍什么是 ORM 框架?相关面试题,主要包含被问及什么是 ORM 框架?时的应答技巧和注意事项,需要的朋友参考一下 ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。 使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。

  • ORM(Object-relational mapping),对象关系映射。 是为了解决面向对象与关系型数据库存在的不匹配问题。 ORM框架的优点: 开发效率更高 数据访问更抽象、轻便 支持面向对象封装

  • 本文向大家介绍在Python的Django框架中创建语言文件,包括了在Python的Django框架中创建语言文件的使用技巧和注意事项,需要的朋友参考一下 当你标记了翻译字符串,你就需要写出(或获取已有的)对应的语言翻译信息。 这里就是它如何工作的。 地域限制 Django不支持把你的应用本地化到一个连它自己都还没被翻译的地域。 在这种情况下,它将忽略你的翻译文件。 如果你想尝试这个并且Djang

  • 嗨,我使用Play框架2.4.3和scala版本2.11我使用放心scala支持测试路线,但我得到 经过研究,我发现Junit导致了rest assured hamcrest matcher NoSuchMethodError的问题,hamcrest 1.3 这是构建。sbt文件内容 这是异常日志 请帮助说明导致异常的原因

  • 本文向大家介绍易语言的超文本浏览框实现,包括了易语言的超文本浏览框实现的使用技巧和注意事项,需要的朋友参考一下 添加一个按钮 页面内可以点击跳转 出现错误 解决办法 实验效果

  • 问题内容: 我有一个语言代码列表(如“ en”,“ es” …),我需要用以下语言显示: 是否有任何内置API可以在Android中获取这些文件,还是我应该自己映射它们? 问题答案: 该班有一个方法,这个:作为文档说: 返回此语言环境的语言名称,本地化为 。确切的输出形式取决于此语言环境是否对应于特定的语言,脚本,国家/地区和变体。 因此,您可以像这样获得语言环境的语言名称:

  • 本文向大家介绍易语言信息框添加图标的方法,包括了易语言信息框添加图标的方法的使用技巧和注意事项,需要的朋友参考一下 易语言信息框的制作很简单,但是怎么修改信息框的图标呢?下面小编为大家解决问题 1、打开易语言,选择Windows程序窗口 2、这里只需要一个按钮就足够了,如果需要其它的可以自己添加上去。 3、双击按钮进入编程界面,我们在这里编写程序。 4、然后输入一个信息框,这里的"0"的位置就是图