草庐IT

computer-database-jpa

全部标签

java - 将声明式和编程式事务与 Spring 和 JPA 监听器混合

我正在使用JPAEntityListener做一些额外的审计工作,并使用@Configurable将Spring管理的AuditService注入(inject)我的AuditEntryListener。AuditService生成AuditEntry对象的集合。AuditService本身是一个Singleton范围的bean,我想将所有AuditEntry对象收集在一个公共(public)key下,然后可以由最外层的服务层(调用持久调用的层调用,进而触发EntityListener)访问。我正在考虑使用Spring的TransactionSynchronizationManager

java - Spring JPA : Should the Save() method commit data to the database?

我正在为我的项目使用Springdata,我正在使用extendsCRUDRepository的标准Repository。我的代码按预期工作,但是当我调用repository.save()时,数据库没有改变?我是否还需要在此之后调用commit以更改数据库?或者repository.save()方法应该自动更改数据库吗? 最佳答案 当你的应用程序运行时,与线程关联的实体管理器保持对修改或添加对象的控制,save()方法就是这样做的,它是一个标记,上面写着:“这应该保存在数据库中”。数据库DML(插入、更新、删除)不会在您保存内容时发

java - 在 JPA 2 Criteria API 中选择 DISTINCT + ORDER BY

我有一节课Lawsuit,其中包含一个List,每个都有Date属性。我需要选择所有Lawsuit按他们的日期订购Hearing我有一个像这样的CriteriaQueryCriteriaBuildercb=em.getCriteriaBuilder();CriteriaQuerycq=cb.createQuery(Lawsuit.class);Rootroot=cq.from(Lawsuit.class);我使用distinct来扁平化结果:cq.select(root).distinct(true);然后我加入Lawsuit与HearingJoinhearing=root.join(

java - 复杂搜索查询 JPA

在我的Wicket+JPA/Hibernate+Spring项目中,大部分功能都基于收件箱页面,其中使用许多过滤选项(并非必须使用所有选项),用户可以限制他们想要的对象集跟...共事。我想知道实现此过滤的最佳策略是什么?在此应用程序的旧版本中,搜索查询是通过连接包含SQL条件的字符串构建的。最近我读到了JPA提供的新CriteriaAPI——你会推荐这个而不是使用搜索字符串吗?这如何与DAO层结合-在业务层中使用CriteriaAPI构建搜索查询不是违反层分离吗? 最佳答案 对于像您描述的那样过滤查询,我绝对推荐使用Hibernat

java - JPA+Hibernate - 实体关系中的循环 - 级联策略

我有一组实体,它们相互连接形成一个循环,即父实体P与两个子实体C1和C2有两个一对多关系,每个子实体都有一对多关系与另一个实体A。实体A实现了这些实体(C1,C2)的关联并定义了关系的属性(它不仅仅是一个连接表)。所有关系都可以在两个方向上导航。这个设计产生了以下问题:假设您总是在根实体P上调用实体管理器操作,那么级联策略应该是什么,以便实体A可以持久化/合并?A是否应该从两条路径级联可达?注意事项:似乎如果应用程序选择仅提供一个级联路径,则可能会出现抛出TransientObjectException的情况。如果它提供两条路径,那么这些路径必须形成完整的循环,例如可以尝试通过A保存C

java - 远程处理案例中的惰性/急切加载策略 (JPA)

我遇到了LazyLoading异常,就像大多数尝试使用ORM进行远程处理的人一样。在大多数情况下,切换到预先获取可以解决问题(延迟加载/非原子查询/线程安全/n+1问题......)。但是如果你正在处理一个非常大的对象图,那么急切获取也有缺点。在大多数用例中不需要加载整个对象图。加载比需要更多的数据感觉不好(或从数据库加载它们并提取所需的子集)。那么有什么替代方法可以解决这类问题(在运行时)?我见过:将数据访问依赖项注入(inject)域对象并让该对象决定是延迟加载还是急切加载:感觉很糟糕!领域层应该独立于任何服务。域注入(inject)也是一项昂贵的操作。域应该是数据访问无知的,并且

三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合

在快节奏的软件开发领域,每一个简化工作流程的机会都不容错过。想要一个无需繁琐配置、能够迅速启动的数据持久化方案吗?这篇文章将是你的首选攻略。在这里,我们将向你展示如何将 SpringBoot 的便捷性、JPA 的强大查询能力和 SQLite 的轻量级特性结合在一起,实现快速而又优雅的数据管理。为什么选择SQLiteSQLite 是一个用C语言编写的开源、轻量级、快速、独立且高可靠性的SQL数据库引擎,它提供了功能齐全的数据库解决方案。对于大多数的应用,SQLite 都可以满足。使用SQLite可以零配置启动,对于小型应用或者快速原型设计是一个非常大的优势。使用SQLite具有下面几个优点:1.

java - HSQLDB SQL异常 : Out of memory establishing database connection

我们有一个带有本地HSQLDB数据库的桌面应用程序。一些客户报告他们的应用程序停止工作。当我尝试使用DbVisualizer打开它时,我可以在调试控制台上看到:12:45:32[DEBUGpool-2-thread-1D.?]RootConnection:jdbcDriver.connect("jdbc:hsqldb:C:\test\database.db",{user=**,password=})java.sql.SQLException:errorinscriptfileline:56outofmemoryatorg.hsqldb.jdbc.Util.sqlException(Un

java - 在这种情况下是否需要调用 flush() (JPA 接口(interface))?

因为调用flush()来让每个实体从内存持久化到数据库。因此,如果我调用太多不必要的flush(),可能会花费很多时间,因此对于性能来说不是一个好的选择。这是一个我不知道什么时候调用flush()的场景?//OrderandItemhaveBidirectionalRelationshipsOrderord=Neword("myfirstorder");Itemitem=NewItem("tv",10);//...processitemandordobjectem.persist(ord);//emisaninstanceofEntityManagerem.flush();//No.1

java - JPA : How to define @NamedEntityGraph for 3 levels?

我有3个实体。分支,主题,主题。Branch有主题列表,Subject有主题列表。还subjectList和topicList都是惰性的。我想获取所有分支在单个查询中包括其主题和主题。1.@EntitypublicclassBranchimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@Id@GeneratedValue(strategy=GenerationType.AUTO)privateIntegerid;privateStringname;@OneToMany(mappedBy="branch")p