您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Hibernate: CRUD Generic DAO

Hibernate: CRUD Generic DAO

这是我的

@Component
public class Dao{

    @Resource(name = "sessionFactory")
    private SessionFactory sessionFactory;

    public <T> T save(final T o){
      return (T) sessionFactory.getCurrentSession().save(o);
    }


    public void delete(final Object object){
      sessionFactory.getCurrentSession().delete(object);
    }

    /***/
    public <T> T get(final Class<T> type, final Long id){
      return (T) sessionFactory.getCurrentSession().get(type, id);
    }

    /***/
    public <T> T merge(final T o)   {
      return (T) sessionFactory.getCurrentSession().merge(o);
    }

    /***/
    public <T> void saveOrUpdate(final T o){
      sessionFactory.getCurrentSession().saveOrUpdate(o);
    }

    public <T> List<T> getAll(final Class<T> type) {
      final Session session = sessionFactory.getCurrentSession();
      final Criteria crit = session.createCriteria(type);
  return crit.list();
    }
// and so on, you shoudl get the idea
@H_419_5@

然后您可以在服务层中像这样访问:

 @Autowired
    private Dao dao;

   @Transactional(readOnly = true)
    public List<MyEntity> getAll() {
      return dao.getAll(MyEntity.class);
    }
@H_419_5@
  

          

解决方法

我的web应用程序已经得到了很多服务表/实体,如payment_methods,tax_codes,province_codes,等。

每次添加新实体时,都必须编写一个DAO。问题是,它们基本上是相同的,但是唯一的区别是实体类本身。

我知道Hibernate工具可以为我自动生成代码,但是我现在不能使用它们(不要问为什么),所以我想到了Generic DAO。关于这方面有很多文献,但我无法整理并使其与Spring一起使用。

我认为这全都是关于泛型的,它将有四种基本方法:

  • listAll
  • saveOrUpdate
  • deleteById
  • getById

就这样。

题:
不重新发明轮子的最佳实践是什么?还没有准备好使用的东西吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
 @Autowired
    private Dao dao;

   @Transactional(readOnly = true)
    public List<MyEntity> getAll() {
      return dao.getAll(MyEntity.class);
    }
@H_419_5@
 

          

解决方法

我的web应用程序已经得到了很多服务表/实体,如payment_methods,tax_codes,province_codes,等。

每次添加新实体时,都必须编写一个DAO。问题是,它们基本上是相同的,但是唯一的区别是实体类本身。

我知道Hibernate工具可以为我自动生成代码,但是我现在不能使用它们(不要问为什么),所以我想到了Generic DAO。关于这方面有很多文献,但我无法整理并使其与Spring一起使用。

我认为这全都是关于泛型的,它将有四种基本方法:

  • listAll
  • saveOrUpdate
  • deleteById
  • getById

就这样。

题:
不重新发明轮子的最佳实践是什么?还没有准备好使用的东西吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

然后您可以在服务层中像这样访问:

我的web应用程序已经得到了很多服务表/实体,如payment_methods,tax_codes,province_codes,等。

每次添加新实体时,都必须编写一个DAO。问题是,它们基本上是相同的,但是唯一的区别是实体类本身。

我知道Hibernate工具可以为我自动生成代码,但是我现在不能使用它们(不要问为什么),所以我想到了Generic DAO。关于这方面有很多文献,但我无法整理并使其与Spring一起使用。

我认为这全都是关于泛型的,它将有四种基本方法:

就这样。

题:
不重新发明轮子的最佳实践是什么?还没有准备好使用的东西吗?

然后您可以在服务层中像这样访问:

 @Autowired
    private Dao dao;

   @Transactional(readOnly = true)
    public List<MyEntity> getAll() {
      return dao.getAll(MyEntity.class);
    }
@H_419_5@
 

          

解决方法

我的web应用程序已经得到了很多服务表/实体,如payment_methods,tax_codes,province_codes,等。

每次添加新实体时,都必须编写一个DAO。问题是,它们基本上是相同的,但是唯一的区别是实体类本身。

我知道Hibernate工具可以为我自动生成代码,但是我现在不能使用它们(不要问为什么),所以我想到了Generic DAO。关于这方面有很多文献,但我无法整理并使其与Spring一起使用。

我认为这全都是关于泛型的,它将有四种基本方法:

  • listAll
  • saveOrUpdate
  • deleteById
  • getById

就这样。

题:
不重新发明轮子的最佳实践是什么?还没有准备好使用的东西吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

我的web应用程序已经得到了很多服务表/实体,如payment_methods,tax_codes,province_codes,等。

每次添加新实体时,都必须编写一个DAO。问题是,它们基本上是相同的,但是唯一的区别是实体类本身。

我知道Hibernate工具可以为我自动生成代码,但是我现在不能使用它们(不要问为什么),所以我想到了Generic DAO。关于这方面有很多文献,但我无法整理并使其与Spring一起使用。

我认为这全都是关于泛型的,它将有四种基本方法:

就这样。

题:
不重新发明轮子的最佳实践是什么?还没有准备好使用的东西吗?

其他 2022/1/1 18:14:19 有277人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶