私はHibernateツールEclipseプラグインを使ってDAO実装を生成しましたが、 "javax.persistence.EntityManager"を使用していました。 Spring Frameworkで提供されているHibernateテンプレートを使用するマッピングされたエンティティ(JPAアノテーションを使用)に基づいてDAO implを生成したいと思います。これどうやってするの?DAOの休止ツールと休止テンプレート
2
A
答えて
0
これは、Spring Frameworkによって提供されるHibernateテンプレートを使用して、DAO Implの汎用実装に基づいてDAOオブジェクトを生成する方法です。 、WMGenericDaoインタフェースがある
の生成DAOのJava FTLとクラス、そしてサンプルが
@Repository("hrdb.UserDao")
public class UserDao extends WMGenericDaoImpl <User, Integer> {
@Autowired
@Qualifier("hrdbTemplate")
private HibernateTemplate template;
public HibernateTemplate getTemplate() {
return this.template;
}
}
のように見え、これは私たちの一般的なDAOのIMPLは勿論ここ
public abstract class WMGenericDaoImpl<Entity extends Serializable, Identifier extends Serializable> implements WMGenericDao<Entity, Identifier> {
private Class<Entity> entityClass;
public abstract HibernateTemplate getTemplate();
@SuppressWarnings("unchecked")
@PostConstruct
public void init() {
if (getTemplate() == null)
throw new RuntimeException("hibernate template is not set.");
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
this.entityClass = (Class<Entity>) genericSuperclass.getActualTypeArguments()[0];
}
public Entity create(Entity entity) {
Identifier identifier = (Identifier) getTemplate().save(entity);
return findById(identifier);
}
public void update(Entity entity) {
getTemplate().update(entity);
getTemplate().flush();
}
public void delete(Entity entity) {
getTemplate().delete(entity);
}
public Entity findById(Identifier entityId) {
return getTemplate().get(entityClass, entityId);
}
}
どのように見えるかです
public interface WMGenericDao<Entity, Identifier> {
Entity create(Entity entity);
void update(Entity entity);
void delete(Entity entity);
Entity findById(Identifier entityId);
}
そしてHibernateTemplateはspring.xmlで宣言されています。 この種の実装では、Springによって提供されるhibernateテンプレートを使用して、リバースエンジニアリングプロセスでAll DAOクラスを生成することができます。
0
TypeToolsをご覧ください。 READMEにはgeneric DAOの例があります:
class Device {}
class Router extends Device {}
class GenericDAO<T, ID extends Serializable> {
protected Class<T> persistentClass;
protected Class<ID> idClass;
private GenericDAO() {
Class<?>[] typeArguments = TypeResolver.resolveRawArguments(GenericDAO.class, getClass());
this.persistentClass = (Class<T>) typeArguments[0];
this.idClass = (Class<ID>) typeArguments[1];
}
}
class DeviceDAO<T extends Device> extends GenericDAO<T, Long> {}
class RouterDAO extends DeviceDAO<Router> {}
関連する問題
- 1. SEAM休止クエリDAO
- 2. 休止状態で休止状態
- 3. 休止
- 4. 休止
- 5. 休止
- 6. 休止
- 7. 休止
- 8. 休止
- 9. 休止 -
- 10. 休止
- 11. 休止
- 12. 休止
- 13. Eclipseでの休止ツールのインストール
- 14. と休止状態
- 15. 休止configuration.xmlの
- 16. 休止+ java.lang.StackOverflowErrorを
- 17. 休止アプリケーション
- 18. 休止Envers:サブクラス
- 19. 休止/シーム:hibernate.show_sql
- 20. STM32L0:休止タイマー?
- 21. 休止状態:
- 22. (休止状態)
- 23. 休止状態
- 24. 休止一覧
- 25. 休止状態:
- 26. JTAトランザクション(休止)
- 27. 休止bulkUpdate()
- 28. 休止カスケード
- 29. 休止SQLクエリ
- 30. 休止QuerySyntaxExceptionマッピング
オンライン「Skyway builder」が見つかりました。便利なツールですか? – observer
HibernateTemplateはほとんど廃止されました(ドキュメントはもはやそれを使用しないよう勧めます)。あなた自身でDAOを生成するのはどうですか?あなたは魔法のツールがあなたのためにそれらを生成する以上のことを学ぶでしょう。 –
アドバイスをいただきありがとうございます。だから私はデフォルトのEntityManagerを使うことができますか? – observer