我检测到Oracle上的hibernate和native查询存在性能问题。当我在TOAD上执行带有多个参数的复杂SQL查询时,我得到了以毫秒为单位的结果。但是,当我使用Hibernate执行相同的查询时,这个时间会大幅增加(最多四秒甚至更多)。我的SQL查询相当复杂,返回一个唯一值(因此,问题与安装类所需的时间无关)并且它包含几个格式为“:nameParameter”的参数。此查询存储在一个字符串中。例如,StringmyNamedNativeQuery="selectcount(*)fromtables"+"wherecolumn1=:nameParameter1"+"andcolu
我正在尝试在Hibernate4.3.5/JPA2对象中使用orphanRemoval,但它似乎没有像我预期的那样工作。但是,我不确定我是否做错了什么,或者这是否仍然是Hibernate中的错误。鉴于以下关系(@Version,为简洁起见省略了getter和setter):@EntitypublicclassProviderimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="id")privateLongid;privateStringname;@OneToMany(o
我正在尝试在子类中映射一个@Embeddable对象,该子类的父类已经具有该@Embeddable类型的字段。hibernateEmbeddableObjectsdocumentation声称我可以使用@AttributeOverrides来覆盖@Embeddable对象的列名:例如@EntitypublicclassPersonimplementsSerializable{//PersistentcomponentusingdefaultsAddresshomeAddress;@Embedded@AttributeOverrides({@AttributeOverride(name=
我正在编写一个应用程序,将来自第三方数据源的实体同步到我们自己的架构中,中间有一个转换/映射步骤。我正在使用Hibernate来表示和持久化我们自己的模式中的实体。我遇到的一个问题是我的一张表上有一个唯一的多列键。我希望看到的行为类似于upsert:当Hibernate去持久化实体并检测到违反唯一约束时,它会改为进行更新。我们正在使用MySQL,它提供了INSERT...ONDUPLICATEKEYUPDATE语法,但我不确定Hibernate如何或是否可以使用它?我想我总是可以尝试插入,如果我发现异常则进行更新,但这似乎很老套而且不是最理想的。有没有关于以干净的方式执行此操作的提示?
我正在使用hibernate。它具有id列,精度为20,如下所示,但为NUMBER类型。NUMBER(38,20)-这是表(Oracle数据库)的id列的大小。此id由我们的应用程序生成。在实体中,如果我使用Float或Double,它不能容纳20个精度。但是java.math.BigDecimal可以容纳这么多精度。但问题是我可以在hbm中使用BigDecimal吗?会有什么问题吗?有时我可能无法准确发送ID。那个时候hibernate会生成任何空精度和插入吗?请推荐! 最佳答案 您可以使用type="big_decimal"。在
我刚开始学习Hibernate,我对每个事务都使用以下模式(来自documentation):privateSessionsession;privateTransactiontransaction;protectedListselectAll(Classclazz)throwsHibernateException{Listobjects=null;try{session=MyHibernateHelper.getSessionFactory().openSession();transaction=session.beginTransaction();//SELECTALLobjects
我想知道在Java上使用HB更新分离对象的某些字段的最佳方法是什么。特别是当对象具有子对象属性时。例如(删除注释并减少字段数以减少噪音):publicclassParent{intid;Stringfield2;...Childchild;}publicclassChild{intid;Stringfield3;}在MVC网络应用程序中更新父级时,我可以使用Session.get(Parent.class,123)调用父级实例,使用它来填充表单并显示它。没有DTO,只有分离的父级被传递给View并绑定(bind)到表单。现在,我只想允许用户更新父级的field2属性。因此,当用户发布表
在这种情况下,有人能帮助我吗?我正在使用hibernate从数据库中选择数据,但是当我从sql调试日志中检查时。在使用“select”sql从数据库中获取数据后,我总是看到打印更新sql。2013-08-1313:39:08,054DEBUG[http-0.0.0.0-8080-1-TASK]-[org.hibernate.SQL]SELECTthis_.idASid504_2_,this_.bridgedlinedialoguriASbridgedL2_504_2_,this_.bridgedlineuriASbridgedL3_504_2_,this_.currentsipsubs
我正在创建一个对数据库具有只读访问权限的服务。我在Hibernate中启用了查询缓存和二级缓存(READ_ONLY模式)以加速服务,因为被访问的表很少更改。我的问题是,如果有人进入数据库并手动更改表(即在Hibernate之外),缓存是否会自动识别它需要被清除?缓存有时间限制吗? 最佳答案 不,缓存不会扫描数据库以便您在基础数据更改时神奇地更新自身。不通过L2缓存的更改将不会出现在其中。超时等需要多长时间取决于您的提供商以及默认设置是什么。看起来默认的ehcache.xml是2分钟。 关
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在寻找构建在Hibernate之上的ActiveRecord模式的Java实现。.Net中有一个开源项目CastleWindsorActiveRecord它在NHibernate之上实现了ActiveRecord模式。我正在寻找类似这样的东西,除了位于Java的NHiberate持久性框架之上。