当我们在Hibernate中保存一个对象时,我们不是将依赖对象保存为id,而是加载该对象并保存它。Ex:Employee有一个部门外键,所以如果我们需要保存employee对象那么我们会做这样的事情:saveEmployee{emp.setName(name);Departmentdepartment=session.find(Department.class,deptid);emp.setDepartment(department);}现在,如果我们导入1000条记录,并且我们在excel中将deptid作为单独的列,那么将调用不必要的1000次db来获取相应的部门。那么有什么更好的
我有一个JSF2.0应用程序,我想开始为其添加validator。应用架构的基本概述如下。我有托管支持Bean,其中包含我的JPA注释类和EJB的实例。EJB负责以事务方式访问数据库。JPA注释类值绑定(bind)到我的facelets(并使用EJB进行数据库访问)。我想潜在地使用Bean验证并编写自定义约束,但这意味着我必须将这些约束添加到我的JPA注释类中。在我看来,这似乎违反了我的关注点分离。(将表示/验证与JPA注释类/DAO混合)在这种情况下不使用Bean验证是否更好?我的结构有缺陷吗?有没有我不知道的首选方法?谢谢! 最佳答案
我目前正在将一个(工作中的)应用程序从使用EclipseLink转移到HibernateJPA,大多数情况下进展顺利,但我发现了一件事我无法解释,也想不出任何好的搜索条款!基本上,我有四个实体,一对多关系形成一个链:EntityA有一个EntityB的列表,每个EntityB有一个EntityC的列表,每个都有一个EntityD的列表其中每一个都具有多对一的关系,所以:EntityD有一个EntityC,EntityC有一个EntityB,EntityB有一个EntityA。即(为清楚起见大幅缩减):@EntitypublicclassEntityA{@OneToMany(cascad
我有一个应用程序,我试图在其中使用Hibernate作为我的JPA提供程序在2个实体之间实现ManyToMany关系。我正在尝试的示例是单向的,其中一个相机可以有多个镜头,而镜头可以装入多个相机。以下是我的实体类...(只是粘贴其中的相关部分)相机:@Entity@Table(name="CAMERAS")publicclassCameraimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="CAM_ID",nullable=false)privateLongcamId;
我在J2SE项目中使用JPA+Hibernate和PostGreSQL数据库。我有2个实体A和B。A与B具有@OneToMany关系。在我的域模型中,A可能引用数百万个B。当我将新对象添加到集合中时,需要几分钟才能完成。@OneToMany(cascade=CascadeType.PERSIST)Collectionfoo=newArrayList();//mightcontainmillionsofrecords//...//thistakesalotoftimefoo.add(newB());我认为JPA在插入新对象之前获取整个集合。是否可以配置关系,以便通过向集合添加新对象时不执
我将JPA与GoogleAppEngine结合使用。假设我有一个非常简单的@Entity,由一个键和一个字符串组成,仅此而已。我现在创建了10000个这样的实体,将它们放在一个列表中,现在想存储所有这些实体。如果我尝试使用EntityManagerem和for循环遍历所有实体的List...for(MyEntityentity:listOfAllEntities){em.persist(entity);}..我会得到一个IllegalArgumentException:java.lang.IllegalArgumentException:can'toperateonmultipleen
我们有一个JavaJ2EE应用程序,它为每个数据库行插入/更新使用单独的Web服务调用。事实证明这太慢了。他们让我来“快速”修复它。我计划将所有Web服务调用转换为纯JDBC。为此,我需要从池中获取JDBC连接,然后以多种不同的方法使用它。我需要在多个DAO中使用相同的JDBC连接,将它们串在一起形成一个数据库事务。我可以明确地将JDBC连接传递给需要它的每个DAO,但这需要我更改很多方法签名,再加上很多单元测试(这与“快速”部分背道而驰)。我正在尝试想出一个好方法,将JDBC连接放在某个地方,然后只需在需要它的方法中获取它,而不必在任何地方显式地传递它。我们不能在这个项目上使用Spr
OneToMany+MapKeyJoinColumn对我不起作用,请提出我做错了什么。我正在使用JPA2.0+Hibernate3.6.1并想映射下表:上课:@EntitypublicclassQuestion{//idandotherfields@OneToMany(mappedBy="question",cascade=CascadeType.ALL)@MapKeyJoinColumn(name="language_id")privateMapstatements=newHashMap();}@EntitypublicclassStatement{@IdprivateLongid;
我想知道如何为Hibernate实体编写正确的equals()和hashCode(),这些实体与作为业务key很重要的另一个实体具有延迟加载的ManyToOne关系。请注意,我已经阅读了theHibernatedocumentationonthistopic我知道我必须/不应该使用对象ID。为了澄清,这里有一个例子:publicclassBusinessEntityimplementsSerializable{//forsimplicity,herejusttheimportantpartprivateStrings;@ManyToOne(fetch=FetchType.LAZY)pr
我有一个用于几个域类的描述符类。描述符类有一个字段“type”,它是一个枚举,表示域类的类型。在某些查询中,我想返回一个或多个描述符并将类型作为构造函数参数传递。所以我的想法是将它作为查询参数传递:Stringjpql="SELECTNEWmodel.ModelDescriptor"+"(t.id,t.name,t.description,:modelType)...";TypedQueryquery=em.createQuery(jpql,ModelDescriptor.class);query.setParameter("modelType",ModelType.forClass(