代码之家  ›  专栏  ›  技术社区  ›  Lydon Ch

Hibernate模板中的动态表创建

  •  2
  • Lydon Ch  · 技术社区  · 15 年前

    我正在使用HibernateTemplate+SpringFramework导入股票报价数据

    数据格式

    AAPL,09-Jun-2010 09:00,251.47,251.47,251.39,251.39,640
    AAPL,09-Jun-2010 09:01,251.4,251.4,251.05,251.26,6844
    INTC,09-Jun-2010 09:00,251.47,251.47,251.39,251.39,640
    INTC,09-Jun-2010 09:01,251.4,251.4,251.05,251.26,6844
    MSFT,09-Jun-2010 09:00,251.47,251.47,251.39,251.39,640
    MSFT,09-Jun-2010 09:01,251.4,251.4,251.05,251.26,6844
    

    我有一个实体类叫做Stock

    @Entity
    public class Stock implements Serializable {
    public Stock() {}
    
    private Long id;
    private BigDecimal open;
        .... close,high, low..etc
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
        ....
    

    我对这个设置的问题是hibernate会把所有的东西都放到一个名为“Stock”的表中。

    我想把不同的股票分到一个不同的表中,所以有了上面的数据,我将得到3个表(AAPL、MSFT、INTC)

    环境:

    3 回复  |  直到 15 年前
        1
  •  2
  •   Pascal Thivent    15 年前

    我想把不同的股票分到一个不同的表中,所以有了上面的数据,我将得到3个表(AAPL、MSFT、INTC)

    horizontal partitioning (不过,这需要一些测试,我从来没有用MySQL和Hibernate做过测试)。

        2
  •  1
  •   apiri    15 年前

    如果没有为每一个表定制类,我不知道一个简单的方法来适当地制作这些表。

    例如,假设您保留了Stock对象/表,但是有另一个对象,比如DailyActivity组件,它包含日期、open、high、low、close等。

    然后,您可以将您的股票指定为具有DailyActivity对象的集合。然后Hibernate可以将其映射为一对多的日常活动关系。

    然后,如果您想评估MSFT是如何做的,那么从Stock表中选择MSFT记录、在指定的时间段内选择其DailyActivity对象将成为一个相对简单的查询。

        3
  •  0
  •   Community CDub    8 年前

    我不确定这是推荐的。 这个 reference docs 建议物业叫 hibernate.hbm2ddl.auto

    有一些以前的讨论 Hibernate: hbm2ddl.auto=update in production? Hibernate hbm2ddl.auto possible values and what they do? 你也应该看看