问题标签 [hibernate-4.x]

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 投票
1 回答
1865 浏览

java - Spring 3 和 Hibernate 4 道

我发现 HibernateTemplate 已从 Hibernate 4 中删除,我应该如何配置 Dao 应用程序上下文 xml 文件?

0 投票
0 回答
2943 浏览

hibernate - ehcache with Hibernate 4 ,给 运行 Junit 测试时无法初始化类 net.sf.ehcache.config.ConfigurationFactory

我正在尝试使用 Ehcache 作为我的二级缓存来实现 Hibernate 4

Hibernate 属性的 XML 配置

用于测试用例和应用程序的 pom

我的 pom 中也有 ehcache core 2.4.3,但是现在当我运行 Hibernate Junit 测试用例时,出现以下错误

0 投票
0 回答
688 浏览

java - AOP 风格的事务划分实际上是否适用于 Hibernate 4 和 Spring 3.1?

我正在尝试让 hibernate-release-4.1.8.Final 与 Spring 3.1.3.RELEASE 一起使用。

Spring appContext如下:

以上内容与显示 Hibernate 4 集成的最新 Spring 文档非常相似。注意,我更喜欢使用 spring-aop 横切而不是@Transaction注释。根据 Spring 文档,hibernate4.HibernateTransactionManager应该支持声明性配置的两种样式:注释和 XML。但真的吗?这是发生的事情:

常见的 DAO 结构:

不使用注释。我的理解是HibernateTransactionManagerinorm.hibernate4将加入 aop-created TransactionThreadLocal并将其绑定到 Session。似乎绑定永远不会发生?或者也许我没有处理Session我认为我正在处理的问题?

假设我的应用程序是标准 Spring-mvc 应用程序,其中 spring-web 库来自与我展示的相同的发布包。此外,视图org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor用于延长会话生命周期,我没有任何问题......

在 Tomcat6 中运行会产生以下 DEBUG...

到目前为止一切顺利......创建了一个事务,我们建立了一个连接,甚至还有一个说法是找到了一个线程绑定的会话。日志输出将我的调试光标放在DAO.getSomeData方法内,就在getSession()被调用之前以及在我创建查询并拉出 list() 之前。

现在,当getSession()被调用时 aSession被返回 - 但不能被调试器检查 - 奇怪。尝试从 中创建 hql 查询时SessionTransaction回滚 - 暗示它实际上并未绑定到ThreadLocal

我尝试的下一个变体是回到SessionFactoryUtils. 它有效,但似乎有很大的副作用。请注意,这是减少的orm.hibernate4.SessionFactoryUtils,而不是 hibernate3 的。这SessionFactory只会暴露一个openSessionand closeSession。有了这个工厂,getSession()看起来像:

通过SessionFactoryUtils运行,我确实看到了QueryTranslator最终产生数据结果的结果。问题是我打开了一个会话,在我的整个外部事务完成之前不会关闭。每次调用getSession()都会创建一个新连接,我很快就会用完线程。这是 MySQL>show processlist 观察到的,它显示了在获取 JDBC 连接后我允许 BoneCP 和 Tomcat 冻结的最大连接数:

Tomcat 将永远这样坐着。

解决方法似乎是积极的连接管理。我介绍hibernate.connection.release_mode=after_statement了我的<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">定义。

只有 after_statement 似乎有效。有了这个设置,程序执行无问题的琐碎和非琐碎运行。请注意,hibernate.current_session_context_class=thread似乎没有任何影响。总体而言,使用 release_mode 感觉非常 hacky。在每个语句之后积极释放连接的需要必须对负载下的应用程序产生不良后果。

那么 - 发生了什么?为什么不getCurrentSession()返回没有绑定到线程的活动事务的会话?注释是确定何时启动事务@Transactional的唯一方法吗?hibernate4.LocalSessionFactoryBeanSpring Docs 似乎在主题上非常稀疏。

此外,切换到hibernate3.LocalSessionFactoryBean(并将引用 hibernate4 的其他配置切换回 hibernate3)会产生讨厌的java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider,它被 stackoverflow 上的其他线程覆盖。

有任何想法吗?非常感谢一些输入。谢谢!

0 投票
1 回答
4564 浏览

hibernate - JPA 和 Hibernate 代理行为

我试图观察下面的 JPA2 / Hibernate4 代理行为,

// 带有延迟加载的循环实体:

// 持久化实体:

// 输出:

// 加载外部实体:

// 输出:

令我惊讶的是,上面加载的外部实体仍然是普通实体,但我预计它是Hibernate proxylazy loading. 我可能在这里错过了一些东西,那么如何让它正确呢?非常感谢一个简单而具体的例子!

@编辑

根据我的回答,@kostja我修改了代码并在下面的 SE 模式下对其进行了调试,既不能LazyInitializationException生成,也不能被boss property代理。任何进一步的提示?

代码窗口

调试窗口

@编辑 2

最后,我要确认来自的答案@kostja无疑是很棒的。

我在EE模式下进行了测试,所以在proxied boss property下面观察到,

//LazyInitializationException抛出:

Spring Tx//就位后绿灯亮:

// 输出:

另外,可以参考20.1.4。从 Hibernate 文档初始化集合和代理。

0 投票
1 回答
6264 浏览

hibernate - Hibernate 替代方案中的 buildSessionFactory

我正在关注关于 Hibernate 的本教程。该教程已经很老了,因为它仍然使用旧的 buildSessionFactory()。

我的问题是我将如何使用buildSessionFactory(serviceRegistry)我刚开始休眠的最新版本。我不知道我将如何实现这一点。这是我的代码

如果你们可以在没有 Maven 的情况下链接 Hibernate 4 的教程,那也会很有帮助。

0 投票
1 回答
205 浏览

groovy - 未找到带有 Hibernate4 插件类的 Groovy Griffon 异常

我一直在寻找一种快速简便的方法来编写一个非常跨平台的桌面应用程序。这让我想到 JVM 是我应该去的地方。由于我的工作场所使用了 Groovy (Grails),我想我会尝试 Griffon,因为他们声称它本质上是桌面的 Grails。

我想要一个持久性管理层,而且在这个环境中 GORM 似乎还没有准备好,所以我使用 Griffon 的 Hibernate4 插件转向休眠。

并不是说我真的总体上使用过 Hibernate,但是根据指南,我相信我做的事情是正确的。我的聚会表明这不支持注释来连接类,所以我使用的是 hbm.xml 文件。

为插件提供的示例并不复杂,但我不明白我在哪里偏离。

这是一个示例类文件:

这是一些堆栈跟踪:

我的 xml 映射文件:

编辑:我已经删除了所示的括号和空格。在数据库端将 DataSource.groovy 更改为“创建”。仍然遇到同样的问题。hibernate 与 griffon/hsqldb/groovy 集成的示例缺乏详细信息。我是否需要为模型文件创建所有给定属性才能正确解析?我从来没有使用过休眠。也不时髦。也不是狮鹫。如果我能解决这个问题,我肯定会为社区提供反馈,否则我会推出自己的 ORM,因为这是一个相当小的项目。而不是我自己。

0 投票
1 回答
44486 浏览

java - “使用名称创建 bean 时出错”创建事务管理器时

这是我的 hibernate.cfg.xml

这是我的 applicationContext.xml

启动 Tomcat 后,我​​收到此错误

我在这里想念什么?

0 投票
1 回答
819 浏览

java - 简单的 JPA 到 Postgresql 9.1 HibernateEx

似乎是一件足够简单的事情。我过去在 MySQL 和 Oracle 中使用过 Hibernate 序列,但现在在 Postgresql 9.1 中使用 JPA2/Hibernate4 并不断收到异常。有任何想法吗?我尝试了不同风格的 GenerationType.SEQUENCE 和 GenerationType.AUTO,但没有任何效果。我绝对需要帮助。

[1] Postgresql 9.1 DDL

[2] 持久性.xml

[3] 实体代码

[5] JUnit

[3] 例外

0 投票
0 回答
1056 浏览

spring-mvc - Hibernate 4+spring3.2集成报错

我正在尝试使用 hibernate 4 实现 spring mvc 3.2。我在启动应用程序时包含了所有 jars hibernate.jpa.2.0.1,但我遇到了异常。

下面给出的异常堆栈。

0 投票
1 回答
3620 浏览

hibernate - JBoss EAP 5.1.2 上的 Hibernate4 日志记录错误

我希望也许有人以前遇到过这个问题并可以提供建议。我正在 Hibernate 4 和 Spring 3 上编写一个应用程序。这是我的依赖树:

问题是 Hibernate 对 jboss-logging.jar 的依赖。当我将它部署到 JBoss 5.1.2 Enterprise Server 时,我收到以下错误:

Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.MethodValidationPostProcessor#0' defined in ServletContext resource [/WEB-INF/classes/spring/servlet-context.xml]: Cannot resolve reference to bean 'validator' while setting bean property 'validator'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'validator' defined in ServletContext resource [/WEB-INF/classes/spring/application-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'validationMessageSource' threw exception; nested exception is java.lang.NoSuchMethodError: org.jboss.logmanager.LogContext.getAttachment(Ljava/lang/String;Lorg/jboss/logmanager/Logger$AttachmentKeyLjava/lang/Object; at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329)

显然 jboss-logging.jar 和 EAP 服务器有些不兼容。我尝试从 Hibernate 依赖项中排除该 jar,但随后遇到此错误:

Caused by: java.lang.ClassNotFoundException: org.jboss.logging.BasicLogger at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:311) at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1163) at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:862) at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:502) at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

我没有找到太多告诉我如何解决这个依赖问题的东西,所以我希望有人知道如何去做。

谢谢!