草庐IT

java - DAO/存储库 : Good practice return value after insert/update

虽然这可能是一个微不足道的问题,但我一直想知道这个问题。通常,在插入数据库后,返回业务实体的ID似乎是常见的做法。@OverridepublicLongcreateUser(UserEntityuser){em.merge(user);em.flush();returnuser.getId();}返回id而不是业务对象引用本身是否有令人信服的理由?同样,我看到update返回void,但它也可能是一个id/User。如果我要编写一个DAO/Repository供其他人使用,建议的返回值是什么(如果有),为什么? 最佳答案 如果已成功

java - 在 Spring 中延迟加载 DTO 字段

我有一个使用Spring的项目,它被分解成几十个DAO和关联的DTO。我使用的是JdbcTemplate,但没用太多,因为它正是我满意的抽象级别。我目前正在我的DTO上执行延迟加载,方法是在它们的getter中放置一些相当复杂的代码。基本样板逻辑是:1.如果字段不为空返回它的值并退出2.联系适当的DAO并获取相关的DTO3.保存到下次使用。除了我的低级DTO与一大堆DAO耦合并且不是那么POJOey之外,它工作正常。如果我将逻辑放在DAO中,则会出现另一种代码味道,因为它将处理其DTO的CRUD和延迟加载,据我所知,对象应该有单一的责任。我希望有一个相对简单的Spring方法,我可以使

java - 外观和 DAO 之间适合什么模式?

我正在为其JavaEEWeb应用程序设计我公司的部分架构。我非常清楚使用外观和一个或多个DAO的原因。我遇到的问题是:将有一些逻辑绝对属于集成层,因为这一切都是为了保持数据模型的一致性。除了逻辑超出了简单地维护引用完整性和其他将由JPA和Hibernate处理的“原始”持久性任务之外。我不将其归类为业务逻辑,因为它独立于任何业务功能。但是,我的理解是,DAO应该只实现访问对象并将对象持久保存到数据源所需的逻辑。我的结论是,我需要一个适合集成层的类似于“业务对象”的模式。我环顾四周,我发现的最接近的东西(但仍然不太符合我的想法)是SunTransferObjectAssemblerpat

java - 测试 Hibernate DAO,无需围绕它构建宇宙

我们有一个使用spring/Hibernate/MySQL构建的应用程序,现在我们想测试DAO层,但这里有一些我们面临的缺点。考虑多个对象相互连接的用例,例如:书有页。没有Book就不能存在Page对象,因为book_id是Page中的强制FK。为了测试页面,我必须创建一本书。这个简单的用例很容易管理,但是如果你开始构建一个库,直到你没有创建围绕Book和Page的整个宇宙,你才能测试它!所以要测试Page;创建图书馆创建部分创建流派创建作者创建书籍创建页面现在测试页面。有没有一种简单的方法可以绕过这个“universecreation”并单独测试页面对象。我还希望能够测试与Page相

java - java中的DAO模式什么是业务对象

直接来自this关于J2EEDAO模式的oracle文章:确实一切都非常清楚,但业务对象“参与者”(他们这样调用它)除外。在这里,我引用了一些我希望获得更多见解的内容(特别是对现实生活中的例子(一个简单的例子)很有用)。BusinessObjectTheBusinessObjectrepresentsthedataclient.Itistheobjectthatrequiresaccesstothedatasourcetoobtainandstoredata.ABusinessObjectmaybeimplementedasasessionbean,entitybean,orsomeo

java - 通用 DTO 转换器模式

我有很多DTO对象。每个dto类都有方法convertDTO(Entityentity)convertDTOList(Listentity)我想为我的dto对象转换器使用设计模式。我可以使用哪种设计模式以及如何使用?Dozer框架很好。但我想写一个通用模式。 最佳答案 如果您使用Java8,我建议按照建议使用DTO到域转换器模式here下面是一个实现示例:通用转换器publicinterfaceGenericConverterextendsFunction{defaultOconvert(finalIinput){Ooutput=n

java - 如何在 SpringBatch 中解决 org.springframework.dao.EmptyResultDataAccessException

springframework.dao.EmptyResultDataAccessException在尝试从sqlserver数据库中选择数据时,这是我编写的代码。谁能建议如何使用查询界面从数据库中选择数据?publicintgetRedempRequestId(RedemptionResponseBeanredemptionResponse)throwsParseException{finalTimestampredempIdFromCsv=getRedeemDate(redemptionResponse);intparticipantId=redemptionResponse.ge

java - 是否有任何好的通用 JPA DAO 实现?

根据thisarticle,通用JPADAO(数据访问对象)是一个非常好的模式。有什么好的实现方式吗? 最佳答案 您可以查看SpringDataJPA.SpringDataJPA中引入了一些新概念,例如基于方法名称的查询创建,因此您可以声明一个方法,如findById(Stringid)和“通用”实现将解释方法的名称并执行类似selectEntityfromEntitywhereid='givenstring'findByNameAndLastName(Stringname,StringlastName)甚至findByNameOr

java - Spring Java 中许多 DAO 的策略

我们在现有项目中有许多DAO(目前没有接口(interface),但可以改变)。我们没有为每个DAO类连接一个Spring管理的bean并将它们注入(inject)服务层,而是有一个类似这样的DAO“工厂”:publicclassDAOFactory{privatestaticDAOFactorydaoFac;static{daoFac=newDAOFactory();}privateDAOFactory(){}publicstaticDAOFactorygetInstance(){returndaoFac;}publicMyDAO1getMyDAO1(){returnnewMyDAO

java - 有没有办法在没有 DTO 的情况下将 Hibernate 实体公开为 RESTful 资源?

我正在开发一个简单的网络应用程序,它将域模型公开为RESTful资源。我计划使用JPA2(Hibernate)和SpringMVCREST支持。在将Hibernate实体编码为XML/JSON时,如果实体被分离,它将为惰性子关联抛出LazyLoadingException。如果实体仍然附加到HibernateSession,它几乎会加载整个数据库。我尝试使用DozerCustomFieldMapper来确定该属性是否为未加载的惰性HibernateCollection,然后返回NULL。但如果我们有双向关联,Hibernate会急切地加载多对一端,Dozer将尝试复制属性,这将以无限循