程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Polyforms——減少DAO代碼重復

Polyforms——減少DAO代碼重復

編輯:關於JAVA

Polyforms項目的目標是剔除用於綁定數據訪問對象和底層持久化API的重復代碼。該框架采用的辦法是自動實現開發人員定義的Repository接口上的服務方法。接口中定義的方法默認通過命名規則連接到數據庫操作上。例如,項目wiki上討論了如何為User實體對象實現一個存儲。首先,存儲的API必須定義成:

public interface UserRepository extends EntityRepository<User, String> {

  @Finder
  List<User> findByCreator(User creator);
}

@Finder注釋標記了Polyforms的方法。接下來,不要實現UserRepostiory,而是通過另外的注釋在User實體中提供一個匹配Hibernate的查詢。

@NamedQueries({
  @NamedQuery(name = "User.findByCreator", query = "select u from User u where u.creator = :creator"),
})
public class User {
 ...
}

根據文檔,用於查找查詢語句的命名規則是基於方法名和實體名:

命名查詢的映射規則是[name of Named Query] = [name of Entity].[name of method]。你可以通過@Finder指定命名查詢的名字,如@Finder("findUserByName"),然後命名查詢的名字會是“User.findUserByName”。

除了@Finder注釋,還有@Updater和@Counter分別提供了對大規模更新和查詢計數的支持。

EntityRepository

父接口已經支持保存單實體、刪除和通過標識符獲取的功能。

所有這些連接都是通過

Spring framework

完成的,並依賴Spring的切面來提供API的動態實現。

Polyforms支持的其他功能包括:

跟蹤信息(創建者、創建日期、修改者、修改日期)的自動管理

透明的分頁支持

通過注釋定義事務邊界

域事件模型,分離持久化事件和應用功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved