草庐IT

Hibernate4

全部标签

java - 清除整个数据库(用于使用 Hibernate 进行单元测试)

我的单元测试使用Hibernate连接到内存中的HSQLDB数据库。我希望有一种方法可以在JUnit的TestCase.setUp()方法中清除和重新创建数据库(包括架构和所有数据的整个数据库)。 最佳答案 您可以配置您的hibernate配置文件以强制数据库每次都重新创建您的表和模式。create-drophibernate.hbm2ddl.auto在创建SessionFactory时自动验证或将模式DDL导出到数据库。使用create-drop,当显式关闭SessionFactory时,将删除数据库模式。例如验证|更新|创建|创

java - Hibernate 的映射问题

我是hibernate的新手,我在指定hibernate.cfg.xml文件中映射文件的位置时遇到了问题。我在org.hibernate.tutorial.chapter1.domain.Event.java包中创建了一个Event对象,并在同一位置创建了相应的Event.hbm.xml文件。我试图在hibernate.cfg.xml映射标记中指定位置,但我收到InvalidMappingException()。我在帖子中添加了:异常,映射文件和项目文件结构的映射。任何建议都会很棒。484[main]ERRORorg.hibernate.util.xml.ErrorLogger-Err

java - JPA (Hibernate) 准备好的语句的 native 查询慢

在JPA(以及JBoss5中包含的其余Hibernate包)后面使用Hibernate3.3.2GA时出现奇怪的性能问题。我正在使用native查询,并将SQL组装到准备好的语句中。EntityManagerem=getEntityManager(MY_DS);finalQueryquery=em.createNativeQuery(fullSql,entity.getClass());SQL有很多join,但其实很基础,只有一个参数。喜欢:SELECTfield1,field2,field3FROMentityleftjoinentity2on...leftjoinentity3on

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