小编Bri*_*ian的帖子

在JPA/Hibernate中建模两对多关系

我有以下实体关系问题."游戏"必须有两个(并且只有两个)"团队"对象.一个"团队"可以有很多"游戏"

据我所知,这是一种二对多的关系.但是......我不知道如何在JPA中对此进行建模.比如,我打算做这样的事......

@Entity
public class Team extends BaseObject {
  private Long id;
  private Set<Game> games;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO) 
  public Long getId() {return id;}
  public void setId(Long id) {this.id = id;}

  @OneToMany(mappedBy = "game")
  public Set<Game> getGames() {return games;}
  public void setGames(Set<Game> games) {this.games = games;}
}

@Entity
public class Game extends BaseObject {
  private Long id;
  private Team team1;
  private Team team2;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO) 
  public Long getId() {return id;}
  public void setId(Long id) {this.id = id;}

  @ …
Run Code Online (Sandbox Code Playgroud)

java orm hibernate jpa

10
推荐指数
1
解决办法
2777
查看次数

Spring, JPA (Hibernate) & Ehcache Poor Performance

I have what I would assume is a pretty standard setup...spring, jpa (hibernate) and I'm trying to add ehcache.

I have it all configured and verified that it's working...I'm logging the hibernate sql statements and cache statements and can see that the cache is getting invoked and that once the object is in the cache, when I try to load it again, the sql statement is not written out (ie, it's not hitting the database).

However, the performance is terrible...it's …

performance spring hibernate jpa ehcache

7
推荐指数
1
解决办法
1万
查看次数

代码执行的并行化/集群选项

我来自java背景,并且有一个CPU限制问题,我正在尝试并行化以提高性能.我已经将我的代码分解为以模块化方式执行,以便它可以以并行方式分发和运行(希望如此).

@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void runMyJob(List<String> some params){
  doComplexEnoughStuffAndWriteToMysqlDB();
}
Run Code Online (Sandbox Code Playgroud)

现在,我一直在考虑以下选项来并行化这个问题,我想了解这个领域的人们的想法/经验.

我目前正在考虑的选项:

1)使用Java EE(例如JBoss)集群和MessageDrivenBeans.MDB位于群集中的从属节点上.每个MDB都可以选择一个如上所述开始工作的事件.AFAIK Java EE MDB由应用服务器进行多线程处理,因此希望能够利用多核.因此它应该是垂直和水平可伸缩的.

2)我可以看看使用Hadoop和Map Reduce之类的东西.我在这里担心的是我的工作处理逻辑实际上是相当高的水平,所以我不确定Map Reduce的可译性.另外,我是MR的新手.

3)我可以看看像Scala这样的东西,我认为这使得并发编程变得更加简单.但是,虽然这是可垂直扩展的,但它不是集群/水平可扩展的解决方案.

无论如何,希望所有这些都有意义,非常感谢你提供的任何帮助.

architecture scala mapreduce cluster-computing java-ee

6
推荐指数
1
解决办法
356
查看次数

jpa连接查询子类

我在JPA(hibernate)中有以下关系.

对象X有两个子类,Y和Z.

对象A与对象X具有manyToOne关系.(注意,这是单侧关系,因此对象X无法看到对象A).

现在,我想获得对象A中列的最大值,但仅限于关系是特定子类型的位置,即... Y.

因此,这相当于...获取对象A中column1的最大值,跨越A的所有实例,它们与Y有关系.这可能吗?我有点迷失如何查询它.

我想的是:

String query = "SELECT MAX(a.columnName) FROM A a join a.x;
Query query = super.entityManager.createQuery(query);
query.execute();
Run Code Online (Sandbox Code Playgroud)

然而,这没有考虑X的子类...所以我有点迷失.

任何帮助将非常感激.

sql polymorphism hibernate jpa polymorphic-associations

5
推荐指数
2
解决办法
5603
查看次数

使用JPA进行动态更新

最近我了解到,如果只进行一次更改并调用merge,则默认的hibernate行为是更新对象中的所有字段.

动态更新是允许您配置仅更新已更改字段的替代方法的字段...

http://www.mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/

我正在使用JPA与hibernate,我试图添加以下内容

@javax.persistence.Entity
@org.hibernate.annotations.Entity(dynamicInsert=true, dynamicUpdate=true) 
Run Code Online (Sandbox Code Playgroud)

到我的班级(之前它只有JPA注释)

无论如何,我一直在监视sql,不幸的是它没有改变它,我仍然看到每个字段都更新.

这是我更新对象的java ...

    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)    
public void setAccountStatusForUser(String username, AccountStatus act){
    User u = this.getUser(username);
    u.setAccountStatus(act);
    this.update(u);
}
Run Code Online (Sandbox Code Playgroud)

并且update方法执行以下操作:

    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
  public Object update(Object o) {
      Object a = this.entityManager.merge(o);
      this.entityManager.flush();
      return a;
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

performance hibernate jpa

5
推荐指数
1
解决办法
7487
查看次数