我发现JPA或类似的,不鼓励DAO模式。我不知道,但我有这种感觉,尤其是对于服务器管理的JTA管理器。在使用DAO模式进行了充分的实践之后,我开始围绕该模式设计基于JPA的应用程序。但它不适合,IMO。我倾向于失去JPA的相当多的功能和所有功能。好吧,假设您使用悲观锁定触发一个查询,并从DAO方法返回一个实体列表。返回后,事务结束并且锁定消失(服务器管理的JTA管理器的情况)。所以,没有意义,松散地说。不过,也有有效的案例。另一个例子要简单得多。假设您触发查询以获取某个实体,该实体与其他实体具有延迟加载一对多关联。返回DAO方法后,事务结束。延迟加载不再起作用,您只需得到null或其他
刚接触SpringBoot和JPA...假设我有两个实体映射到连接到数据库中的两个表。学生1-----另外,假设数据库已经创建并填充。这描述了一个学生有很多类(class)......我的学生实体:@EntitypublicclassStudent{@OneToMany(mappedBy="student")privateListcourses;@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="Student_Id")privatelongstudentId;@Column(name="Student_Name"
我总是面临一个问题,即我无法真正想到封装许多DAO方法的服务对象。我的意思是,对于我的servlet,有时使用单个DAO方法就足够了,例如addUser(Userparams)。更好的做法-用服务对象封装DAO方法并始终只使用服务对象,即使它的字面意思是单个服务方法调用单个dao方法或将它们混合在一起使用(一些方法来自服务对象,一些来自服务对象servlet上下文中的dao)——这意味着我在Controller内部有Autowiring的DAO和服务对象?如果我开始在同一个地方同时使用DAO和Service对象,它会混淆逻辑吗? 最佳答案
我正在开发一个Spring应用程序(Spring3.0)并遵循分层架构,即Controller->Service->DAO层。我想使用Junit为服务和DAO层编写单元测试用例。我查看了Spring官方网站并尝试了许多其他网站,但无法找到一种简单易行的方法。谁能给我一些有用的资源?编辑:看起来像Mockito是不错的选择。在Spring中使用它的任何好的链接。感谢Alex的建议。MockingHibernateDAO 最佳答案 在资源方面,Spring的测试文档非常好。这可以找到here.当您测试服务层时,您将需要使用Mockito
我的Web应用程序有很多服务表/实体,例如payment_methods、tax_codes、province_codes等。每次我添加一个新实体时,我都必须编写一个DAO。问题是,基本上,它们都是相同的,但唯一的区别是实体类本身。我知道Hibernate工具可以自动为我生成代码,但我现在不能使用它们(不要问为什么),所以我正在考虑一个GenericDAO。有很多关于这方面的文献,但我无法将其拼凑起来并使其与Spring一起使用。我认为这都是关于泛型的,它将有四种基本方法:listAllsaveOrUpdatedeleteByIdgetById仅此而已。问题:什么是不重新发明轮子的最佳
这个问题在这里已经有了答案:JavaEEArchitecture-AreDAO'sstillrecommendedwhenusinganORMlikeJPA2?(2个回答)关闭5年前。我正在设计一个基于JPA/Hibernate、Spring和Wicket的新应用程序。DAO和服务层之间的区别对我来说并不是那么清楚。根据维基百科,DAO是anobjectthatprovidesanabstractinterfacetosometypeofdatabaseorpersistencemechanism,providingsomespecificoperationswithoutexposi
首先,我可能会问一些以前被问过和回答过的问题,但我无法得到搜索结果。我们在服务层上定义事务注释,典型的springhibernatecrud通常是Controller->Manager->Dao->Orm.我现在遇到需要在基于客户端站点的域模型之间进行选择的情况。假设客户端A正在使用我的域模型,一切都很好,但是其他客户端站点会给我一个Web服务而不是使用我们的域模型。我应该更换哪一层。我相信它必须是DAO,它将从Web服务中获取我的数据并将其发送回。即两个单独编写的DAO层并根据场景插入。我现在意识到,当我们将@Transactional放在Service层时,我们一直在做紧耦合(如果
我正在尝试使用kotlin协程通过here描述的方法访问房间数据库,添加了插件和依赖,并在gradle中启用了kotlin协程。在gradle文件中:kotlin{experimental{coroutines'enable'}}dependencies{implementation"org.jetbrains.kotlinx:kotlinx-coroutines-core:0.21"...}所以我添加了suspenddao类中所有方法的关键字,如下所示:道类@Query("select*frommyevent")suspendfunall():List@Deletesuspendfu
我正在尝试实现http://thinkrelevance.com/blog/2013/06/04/clojure-workflow-reloaded的想法进入我的代码库。我有一个dao层,现在我需要传入一个数据库以避免全局状态。让我失望的一件事是这句话:Anyfunctionwhichneedsoneofthesecomponentshastotakeitasaparameter.Thisisn'tasburdensomeasitmightseem:eachfunctiongets,atmost,oneextraargumentprovidingthe"context"inwhichi
我在浏览一个文档时遇到了一个名为DAO的术语。我发现它是一个数据访问对象。有人可以解释一下这实际上是什么吗?我知道它是一种用于访问来自不同类型源的数据的接口(interface),在我的这个小研究中,我碰到了一个叫做数据源或数据源对象的概念,事情变得一团糟我脑海。我真的很想知道DAO是如何以编程方式使用的。它是如何使用的?任何从非常基本的东西解释这个概念的页面的链接也很感激。 最佳答案 数据访问对象基本上是提供对底层数据库或任何其他持久性存储的访问的对象或接口(interface)。该定义来自:http://en.wikipedia