问题标签 [spring-orm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
199 浏览

spring - 如何在遗留的非托管和基于 jdbc 的代码中嵌入 spring 声明性 JPA 事务

我们有一个使用普通 JDBC 连接且不受 Spring 管理的旧版 Web 应用程序。我们目前正在转向完整的 spring/JPA 托管应用程序。

当前遗留应用程序正在调用 spring bean。Spring bean 正确标记为@Transactional. 遗留应用程序在OpenEntityManagerInViewFilter.

用例

  1. 旧版应用程序打开 JDBC 连接
  2. 旧版应用程序通过 JDBC 连接应用更新而不提交
  3. Legacy App 调用注解的 spring bean 方法@Transactional
  4. 在方法结束时,Spring 提交
  5. 旧版应用无法回滚第一次更新

如何在旧版应用程序中启动交易,@Transactional以避免不必要的提交?

0 投票
1 回答
552 浏览

java - Spring HibernateDaoSupport 创建多个会话

我正在为我的 Web 应用程序使用 Struts2.3 + Spring 3.2.6 + Hibernate 3.X。

我正在使用注释来管理事务。我的 DAO 课程如下。

这些方法将从服务层调用,如下所示;

执行上述代码时,我会为同一线程获得不同的会话。

输出:

因此,如果在 method2() 中出现任何异常,则使用 method1() 持久化的数据不是 rollback

请让我知道,如何在不丢失 Spring 事务管理的情况下基于线程获取单个会话(如果我使用自己的 HibernateFactory,我会失去 Spring 的事务管理)。

0 投票
1 回答
221 浏览

java - 可以将 spring-orm 3.2.4 与 Spring 4.1 一起使用吗

我正在将使用 Spring 2.5 构建的旧应用程序升级到 Spring 4.x。该应用程序正在使用 IBatis(现为 myBatis)。Spring orm 4.x 不再支持 Ibatis,因为它删除了支持类。Spring 3.2.4 仍然有它。我想知道将新版本的 Spring(webmvc、web、context 等)与旧版本的 Spring-orm(3.2.4)一起使用是否安全。将 Ibatis 升级到 Mybatis 会增加项目的范围,现在它超出了范围。

0 投票
0 回答
376 浏览

java - 加快批处理的 Hibernate.find() 查询?(并减少内存使用)

我们已经从使用针对数据库视图的直接 sql 查询的 java 1.4 迁移到 java 8、域对象和使用 hibernate 的 orm 持久性。

我的批处理必须从数据库中读取 300,000 行,它看起来像这样:

然而,这非常慢(9 分钟,而数据库查询需要 30 秒)并且消耗大量内存。

我打开了休眠show_sql,我可以看到它花了很多时间从 3 个不同的表中加载域对象(比如说,小部件包含一个 Wobjet 和一个 Wudget)

而且由于我不需要整个list(我可以逐行进行批处理),我想知道:

hibernate 中是否有某种 ResultSet 内存效率更高(更快)?

顺便说一句,我们使用的是 Spring Batch,而后备数据库是 Oracle(尽管可以更改)。

如果可能的话,使用 会更容易HibernateTemplate,因为我们层中的所有其他操作都Dao使用相同的模板(尽管这是批量处理大量数据的第一个操作)。

0 投票
1 回答
2436 浏览

java - org.springframework.beans.NotWritablePropertyException:bean 类的无效属性“configurationClass”

我正在尝试迁移到更新的休眠版本

在配置中我已更换

1

2

结果,我在启动应用程序时看到以下错误消息:

附言

休眠依赖:

0 投票
1 回答
1352 浏览

hibernate - HibernateDAOSupport 与 HibernateTemplate

我试图了解 HibernateDAOSupport 提供的优于 HibernateTemplate 的好处。HibernateTemplate 几乎可以做所有事情。那为什么我们需要扩展 HibernateDAOSupport 和 getHibernateTemplate 并进行操作,而不是注入 hibernateTemplate 并进行操作。当 DAO 类扩展 HibernateDAOSupport 时,我们得到了什么好处。

我知道不建议再使用 HibernateDAOSupport 和 HibernateTemplate,而只是想了解它们的区别。

0 投票
1 回答
1031 浏览

java - Spring 4 + HIbernate 4 + Junit @Transactional nativeSQL query

Hi I've a problem with Spring Hibernate session management in some JUnit tests.

I have a test class signed as @Transactional in order to have the autorollback feature for each test method; during a test i insert three rows into the database and then run a native query (using session.createSQLQuery()) which should return a list containing all three elements i've just saved, but the result of the native query is always empty.

I've tryied to remove @Transactional from test class so the insert process will end with a commit, in this scenario my native query works perfectly and the test is green but no rollback is perfomed (due to the lack of @Transactional).

Personally I would prefer to not sign test with @Rollback(false) and remove the data manually so I was wondering if this strange behavior was caused by incorrect configuration.

Thanks in advance.

Below my Spring session and transaction manager configuration, incriminated test and native query under test.

Spring Config:

Method under Test

Test code:

0 投票
1 回答
8119 浏览

spring-mvc - Tomcat 7 SEVERE:在 pom 中将 spring-data-jpa 添加到依赖项后,由于先前的错误,上下文 [] 启动失败

我有一个 spring rest 应用程序。它配置了注释。

当我添加 spring-data-jpa 依赖项时,应用程序在 Tomcat 7(jdk 1.7)上出现错误:

我将 logging.properties 文件添加到 WEB-INF/classes:

但是我没有在日志中捕获任何其他信息。

我的源代码:

MyWebApplicationInitializer.java:

}

WebConfiguration.java:

HelloWorldController.java:

pom.xml:

0 投票
1 回答
7360 浏览

java - 找不到persistence.xml

我尝试将 jpa 与 spring-orm 和 hibernate 一起使用。

我有带有 TRADES 表的 mysql 数据库。我尝试使用 jpa 来处理这个表。我尝试使用 persistence.xml 测试 EntityManager 的创建,但我得到一个例外,即“没有名为 [persistence-unit-name from persistence.xml] 的 EntityManager 的持久性提供程序”正如我在另一个这样的问题中所看到的,这对我的情况意味着持久性.xml 文件未找到。

当我尝试测试此配置时,我得到了一个异常,即我认为没有找到 persistence.xml。

我无法弄清楚为什么会这样。你可以帮帮我吗?谢谢。

桌子:

此表的实体类:

和 src/main/resources/META-INF 中的 persistence.xml

这是测试类:

来自 build.gradle 的依赖项:

0 投票
2 回答
7005 浏览

java - org.hibernate.WrongClassException 通过 Hibernate 保存实体

在这个问题中,我正在使用 Hibernate 4.3.4.Final 和 Spring ORM 4.1.2.RELEASE。

我有一个 User 类,它包含一组 CardInstances,如下所示:

我有几种类型的卡片,每一种都扩展了 Card 基类和 CardInstance 基类,如下所示:


如果我将 UnitCardInstance 或 HeroCardInstance 添加到卡片集合并保存实体,一切正常。但是,如果我将 AbilityCardInstance 添加到集合并保存实体,它会因 org.hibernate.WrongClassException 而失败。我在帖子底部添加了确切的异常+消息。

我阅读了一些问题,在使用基类的集合时延迟加载似乎是一个问题,所以这是我在添加卡并保存之前加载用户实体的方法:


“卡片”
数据库条目
的数据库条目 “卡片实例”的数据库条目
数据库条目


提前感谢您提供如何解决此问题的任何线索。如果您需要更多信息,我很乐意更新我的问题!