问题标签 [hibernate]

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 投票
18 回答
338095 浏览

java - Hibernate 和 MySQL 的创建时间戳和上次更新时间戳

对于某个 Hibernate 实体,我们需要存储其创建时间和上次更新时间。你会怎么设计这个?

  • 您将在数据库中使用哪些数据类型(假设 MySQL,可能与 JVM 在不同的时区)?数据类型会感知时区吗?

  • 你会在 Java 中使用哪些数据类型(Date, Calendar, long, ...)?

  • 你会让谁负责设置时间戳——数据库、ORM 框架(Hibernate)还是应用程序程序员?

  • 您会为映射使用哪些注释(例如@Temporal)?

我不仅在寻找一个可行的解决方案,而且在寻找一个安全且设计良好的解决方案。

0 投票
5 回答
14551 浏览

java - How to use MySQL prepared statement caching?

How do i take advantage of MySQL's ability to cache prepared statements? One reason to use prepared statements is that there is no need to send the prepared statement itself multiple times if the same prepared statement is to be used again.

When running the above Java example I see 5 pairs of Prepare and Execute commands in the mysqld log file. Moving the ps assignment outside of the loop results in a single Prepare and 5 Execute commands of course. The connection parameter "cachePrepStmts=true" doesn't seem to make any difference here.
When running a similar program using Spring and Hibernate the number of Prepare commands sent (1 or 5) depends on whether the cachePrepStmts connection parameter is enabled. How does Hibernate execute prepared statements to take advantage of the cachePrepStmts setting? Is it possible to mimic this using pure JDBC?
I was running this on MySQL Server 4.1.22 and mysql-connector-java-5.0.4.jar

0 投票
6 回答
48918 浏览

java - 如何阻止 Hibernate 急切地获取多对一关联对象

我有一个在多对一元素中声明的域对象的属性。此属性的基本语法如下所示:

现在,我们的想法是让 Hibernate 不急于获取这个属性。它可能为空,因此设置了未找到的忽略。

但是,Hibernate 在加载包含此关联的类时,会在加载父类时自行加载实际类(甚至不是代理)实例。由于某些属性的大小超过 1MB,因此它们占用了大量的堆空间。

但是,如果 not-found 设置为异常(或默认为异常),则具有此属性的父类会加载代理!

如何阻止休眠不加载代理,同时仍然允许此属性为空?

我找到了lazy=no-proxy,但是文档讨论了某种字节码修改,并没有详细说明。有人可以帮我吗?

如果重要的话,它是 Hibernate 的 Java 版本,并且至少是版本 3(如果有帮助,我可以查找实际版本,但现在是 Hibernate 3+)。

我之前没有指定,但是Java版本是1.4。因此,不支持 Java 注释。

0 投票
2 回答
5564 浏览

java - 没有为 JBoss 应用程序找到合适的 MySQL 驱动程序

我是创建 Java Web 应用程序的新手,在尝试通过我的应用程序与我的数据库(称为 ccdb)交互时遇到了这个问题:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/ccdb/

我的应用程序在 JBoss 上运行并使用 Hibernate 与 MySQL 数据库交互。我在项目的 lib\mysql-connector-java-5.1.6-bin.jar 中有 MySQL 驱动程序,并且在 Eclipse 中将 .jar 配置为“Java EE 模块依赖项”,以便将其复制到 web- inf\lib\ 当我通过 Eclipse 将它部署到 JBoss 时。我仔细检查了一下,驱动程序肯定在项目的 .war 文件中,所以应该可以找到,对吧?

我的 hibernate.cfg.xml 包含应该将休眠指向驱动程序的这一行。

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

有谁知道我需要做什么才能让它工作?我是否必须将 MySQL 数据库配置为 JBoss 数据源才能正常工作?

提前致谢。

编辑:kauppi 的解决方案有效,但我更愿意将它与其他罐子放在 lib\ 中,我真的很好奇为什么它不能那样工作。有任何想法吗...?

0 投票
2 回答
9214 浏览

java - 创建自定义 Hibernate UserType - isMutable() 是什么意思?

我正在为一个项目在 Hibernate 中创建一个自定义 UserType。在我使用 isMutable 方法之前,它一直相对简单。我试图弄清楚这种方法在合同方面意味着什么。

这是否意味着我正在为其创建 UserType 的类是不可变的,还是意味着持有对此类实例的引用的对象永远不会指向不同的实例?

我在Hibernate Community Wiki中找到了一些返回 true 的示例,因为对象本身是可变的 - http://www.hibernate.org/73.html

社区 wiki 中的其他示例返回 false 并没有说明原因,即使它们也是可变的。

我检查了JavaDoc,但也不是很清楚。

来自UserType的 JavaDoc :

来自 JavaDoc 的Type

0 投票
2 回答
716 浏览

java - Hibernate 使用复合键返回无效结果

我得到了最奇怪的结果。我有一个带有复合键的类。如果我执行以下查询:

来自 LOVEJB l order by l.canonicalId desc

我的结果不是按我要求的“ canonicalId ”列排序的。相反,规范的 id 结果如下:

823 823 822 823 ,,,

有人可以给我一些关于我应该如何尝试破解它的指示吗?我已经搞砸了hashcodesequals,我尝试了一个新的类等,但无济于事。

0 投票
4 回答
4790 浏览

java - 比较休眠映射的日期?

如何使用 Hibernate 将日期从 java 对象映射到数据库?我尝试了不同的方法,但我对它们不满意。为什么?让我解释一下我的问题。我有以下类 [1],包括我调用的主要方法和以下映射 [2]。当您查看控制台输出时,您可以看到有关此方法的问题。

错误的

错误的

1

-1

1224754335648

1224754335000

2008 年 10 月 23 日星期四 11:32:15 CEST

时钟@67064

正如您所看到的,截止日期并不完全相等,尽管它们应该是相等的,因此很难在没有返回值的情况下比较它们getTime。我还尝试了 java.sql.Date、Timestamp 和 date 而不是映射中的时间戳,但没有成功。

我想知道为什么最后三位数字为零,这是休眠还是 java 问题还是我自己的愚蠢。

感谢您的阅读。

[1]

[2]

0 投票
2 回答
1839 浏览

java - Hibernate 什么时候从二级缓存读取,什么时候从 DB 读取?

据我所知,Hibernate 让您将实体和集合配置为存储在二级缓存中。

Hibernate 什么时候尝试从二级缓存中读取这些缓存的实体,什么时候命中 DB?Sesssion.get()当通过调用加载实体和初始化代理(包括集合)时,Hibernate 是否只从二级缓存中读取?Hibernate 在执行 HQL 或 Criteria-Queries 时是否会命中二级缓存?

例子?

0 投票
7 回答
1115 浏览

hibernate - 你总是在 Hibernate 中使用二级缓存吗?

你总是在 Hibernate 中使用二级缓存,还是先尝试不使用它,然后只在性能下降时使用它?

0 投票
1 回答
1572 浏览

java - JBoss/EJB 与对称 DS

我正在做一个即将开始的项目,由于我正忙于另一个项目,我的同事们继续着手研究新项目的规范。当我进来时,他们刚刚选择使用纯 SQL 进行持久化(尽管很快接受了我添加 Hibernate 的建议),但坚持认为应该使用一个我从未听说过的名为Symmetric DS的工具来执行数据复制。

我很担心,因为据我所知,拥有一个带有 EJB3 的 JBoss 服务器(当前计划仅使用 Tomcat)可以处理所有事务/复制的麻烦,并且应该让我们免于很多麻烦。

你们如何看待这款Symmetric DS?(请注意,我对此没有任何反对意见,只是我知道 JBoss 已经存在了很长时间,而且它的声誉相当可观)

您如何比较这两种解决方案?

谢谢!

编辑:顺便说一下,SymmetricDS 如何处理重复的主键?我的意思是,如果我在数据库 A 中添加一行,在数据库 B 中添加另一行,那么两者可能都会添加相同的主键,对吧?SymmetricDS 如何处理以避免冲突?这个论坛讨论起初似乎解决了其中的一些问题,但并没有完全回答我的问题。