Entity 是 D語言( DLang )資料庫操作 ORM 框架,設計參照 javax JPA 實現,具有很好的擴展性和規範性,資料庫驅動依賴 HuntLabs 開發的原生資料庫驅動庫 hunt-database 。
實現了完整的 CriteriaQuery 支持
標準化 Repository 使用封裝
完全對象化查詢,不用考慮底層資料庫驅動
實現 EQL(Entity Query Language)實現對象化 SQL 查詢語言
PostgreSQL 9.0+
MySQL 5.1+
針對 EQL 進行增強
簡化聯表查詢
重構資料庫連接池部分
使用全新的 hunt-database
移除 libmysql / libpg 依賴,使用 DLang 重構資料庫驅動層
修復部分已知問題
用戶模型
module app.model.User;
import hunt.entity;
@Table("users")
class User : Model
{
mixin MakeModel;
@AutoIncrement
@PrimaryKey
int id;
string name;
int created;
int updated;
}
文章模型
module app.model.Post;
import hunt.entity;
import app.model.User;
@Table("posts")
class Post : Model
{
mixin MakeModel;
@AutoIncrement
@PrimaryKey
int id;
string title;
int uid;
@JoinColumn("uid")
User user;
string content;
int status;
int created;
int updated;
}
使用 EQL 進行條件查詢
// 通過 EQL 查詢出 10 條文章,最新發表的排在前面
auto query = em.createQuery!(Post)("SELECT p FROM Post p WHERE p.status = 1 ORDER BY p.created DESC limit 10");
foreach (post; query.getResultList())
{
logDebug(post.title); // 列印文章標題
logDebug(post.user.name); // 輸出作者名字
}
[admin
]