小编Thu*_*ird的帖子

在同一个文件中包含多个类是不好的做法?

我曾经有一个类用于一个文件.例如,car.cs有类汽车.但是当我编写更多类时,我想将它们添加到同一个文件中.例如car.cs具有类类等.

我的问题适用于Java,C#,PHP或任何其他编程语言.我应该尝试在同一个文件中没有多个类,还是可以的?

language-agnostic oop class file

62
推荐指数
10
解决办法
3万
查看次数

如何使用旧的休眠标准进行批处理?

我仍在使用旧的org.hibernate.Criteria,并且对获取模式越来越困惑。在各种查询中,我需要以下所有变体,因此我无法通过注释来控制它。我只是将所有内容都切换到@ManyToOne(fetch=FetchType.LAZY),否则,查询中的任何内容都没有更改。

到目前为止我能找到的要么涉及 HQL 或 JPA2,要么只提供两种选择,但对于旧标准和(至少)以下三种情况,我需要它:

  • 执行 JOIN,并从两个表中获取。除非数据过于冗余(例如,主数据很大或在结果中重复多次),否则这是可以的。在 SQL 中,我会写
    SELECT * FROM item JOIN order on item.order_id = order.id
    WHERE ...;
  • 执行 JOIN,从第一个表中获取,并与另一个表分离。这通常是前一个查询的更有效的变体。在 SQL 中,我会写
    SELECT item.* FROM item JOIN order on item.order_id = order.id
    WHERE ...;

    SELECT order.* FROM order WHERE ...;
  • 执行 JOIN,但不获取连接的表。这很有用,例如,对于基于另一个表的数据进行排序。在 SQL 中,我会写
    SELECT item.* FROM item JOIN order on item.order_id = order.id
    WHERE ...
    ORDER BY order.name, item.name;

看起来没有明确指定fetch=FetchType.LAZY,一切都会像第一种情况一样急切地获取,这有时太糟糕了。我想,使用Criteria#setFetchMode,我可以获得第三种情况。我还没有尝试过,因为我仍然错过了第二个案例。我知道,它在某种程度上可能,还有的@BatchSize标注。

  • 我对上面的说法正确吗?
  • 有没有办法如何使用旧标准获得第二个案例? …

java performance hibernate join hibernate-criteria

9
推荐指数
1
解决办法
338
查看次数