草庐IT

hibernate-validator

全部标签

java - hibernate session 的 get() 和 load() 方法在获取方面有什么区别?

get()和load()方法有什么区别?关于数据获取方法publicstaticvoidmain(String[]args){SessionFactoryfactory=newConfiguration().configure().buildSessionFactory();Sessionsession=factory.openSession();Transactiontx=null;tx=session.beginTransaction();System.out.println("1sttimecallingloadmethod");Accountacc=(Account)sessi

java - 使用 Hibernate 时内存使用率高

我用在Linux服务器上运行的Java编写服务器端应用程序。我使用hibernate打开数据库session,使用nativesql查询它并始终通过try、catch、finally关闭此session。我的服务器以非常高的频率使用hibernate查询数据库。我已经定义了MaxHeapSize因为它是3000M但它通常在RAM上使用2.7GB,它可以减少但比增加慢。有时它会增长到3.6GB内存使用量,超过我在启动时定义的MaxHeapSize。当使用的内存为3.6GB时,我尝试使用-jmap命令将其转储并得到一个大小仅为1.3GB的堆转储。我用eclipseMAT来分析,这里是MAT

java - 理解 Hibernate 中的@BatchSize

Hibernatedocumentation在@BatchSize中提供了一些信息:@BatchSizespecifiesa"batchsize"forfetchinginstancesofthisclassbyidentifier.Notyetloadedinstancesareloadedbatch-sizeatatime(default1).我不清楚这个注释的目的是什么,我们什么时候需要使用它。能否请一些人帮助我理解何时使用此注释。 最佳答案 使用批量获取,如果访问一个代理,Hibernate可以加载多个未初始化的代理。批量抓

java - 如果我修改一个 Hibernate 实体,在保存之后,当我提交时,更改将保存到数据库中

如果在Hibernate中,我执行以下步骤:打开session。创建一个新的hibernatePOJO对象(即要保存的对象),并填写值。现在我执行session.save()。现在我更改POJO对象-假设它是一个员工对象,然后我执行emp.setName("OtherName"),即更改对象中员工的姓名。现在我进行事务提交。我的问题是什么会被保存到数据库中——我执行session.save()之前的名称还是更改之后的名称,即“其他名称”? 最佳答案 在您保存实体的那一刻,它就变成托管状态,所有进一步的更改都会在Session.flu

java - 在 Spring-Hibernate 项目中初始化实体集合 (POJO) 的正确方法是什么?

我有一个POJO类,比如Foo,它有一组其他实体实例,比如bars。此类项目也有标准的杂项类:Foo和Bar的服务和dao。我希望BarService获取与某些Foo关联的Bar实例集。现在我有以下代码,我认为它在概念上是错误的。publicclassFoo{Setbars;publicSetgetBars(){if(bars==null)return(bars=newHashSet());returnbars;}}publicclassBarServiceImpl{publicListgetListOfBars(Foofoo){returnnewArrayList(foo.getBa

java - 组织.hibernate.AnnotationException : @OneToOne or @ManyToOne on <entity> references an unknown entity

我收到以下Hibernate异常:org.hibernate.AnnotationException:@OneToOneor@ManyToOneoncz.rohan.dusps.model.Switchport.konfiguracniTemplateAccessreferencesanunknownentity:cz.rohan.dusps.model.KonfiguracniTemplateorg.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:103)org.hibernate.cfg.Ann

java - 并非所有命名参数都已在 createSQLQuery 中设置为 hibernate

我收到未设置所有命名参数的错误。下面是我的代码。我的SqlQuery在mysql提示符下运行良好,您可以引用问题中的架构SQLQuerySELECTt.*FROM(SELECT@lim:=2,@cg:='')vars,(select*fromTable1orderbyproduct,amount,make)tWHERECASEWHEN@cgproductTHEN@r:=@limELSE1END>0AND(@r:=@r-1)>=0AND(@cg:=product)ISNOTNULLORDERBYproduct,amount,make我的java代码try{context.dbl.star

java - 组织.hibernate.MappingException : Repeated column in mapping for entity

我正在使用Hibernate3.2.5。使用多对一映射时出现上述异常。培训表与部门表具有多对一关系,即一个部门能够接受不止一项培训。异常要求我在我的hbm文件中添加insert="false"update="false"。如果我在hbm文件中添加这个位,那么代码就可以正常工作。这是hbm文件:如果我将此行更改为:然后代码就可以工作了。我想知道添加这个的确切原因是什么。问候, 最佳答案 您已两次映射DEPT_ID列,此处:在这里:当执行select语句时,Hibernate可以很好地从同一列填充对象的两个属性,但是当执行插入或更新时,

java - hibernate 如何确保二级缓存使用数据库中的最新数据进行更新

我读到过使用hibernate的二级缓存,它可以通过减少数据/对象检索的数据库命中来提高应用程序性能。但是,hibernate如何确保二级缓存与数据库中的数据保持同步。例如:假设以下类是实体并持久化到数据库中。@EntityclassUser{Idprivateintid;privateStringstr;}现在,如果我们启用了二级缓存,我知道如果我们打开不同的session,那么每个session都会命中二级缓存以检索对象值。现在,如果数据库中的数据发生变化(例如,对于id=1的行),比如通过一些独立的进程/手动更改值,并且我们尝试访问该值,hibernate如何检测到缓存具有最新的

java - Hibernate : Why FetchType. LAZY-annotated 集合属性急切加载?

我尝试实现简单的one-to-many协会。在使用Debug模式检查项目对象后,我发现Listbids已经加载。但是Listbids属性用FetchType.LAZY注释.一些书籍和网页声称FetchType.LAZY是JPA提供者接受或拒绝的提示。但我想知道JPA提供商在什么情况下会忽略FetchType.LAZY.提前谢谢你。@Entity@Table(name="ITEM")publicclassItemimplementsSerializable{@IdprivateLongid=null;privateStringname;@ManyToOne(fetch=FetchType