【问题标题】:JPA+hibernate+spring, 2 separate tables in same DBJPA+hibernate+spring,同一个数据库中的2个单独的表
【发布时间】:2015-03-04 18:24:30
【问题描述】:

我正在尝试编写一个单页应用程序,它将当前用户保存到数据库表 (HSQL) 中,并将“故事”列表(仅 1 行)保存到单独的表中(在同一个数据库中)

我有 2 个 POJO,用户和故事。然后是 2 个 dto、2 个存储库等,但我正在努力弄清楚如何将这些持久化到 2 个表中......

基本上我需要知道我是否需要 2 个持久性单元和 2 个 entityManagerFactory's ,即使我希望写入单个数据库,但是写入 2 个表......从环顾四周似乎就是这种情况,但部分问题是我对一些术语很困惑。

关于多个表有很多问题,但它们似乎总是在不同的数据源中。在这种情况下,数据源只是表吗?即持久化到相同的数据库但不同的表(又名数据源) 如果不是,“数据源”和“数据库”在这种情况下是否可以互换?

谢谢。

【问题讨论】:

    标签: spring hibernate jpa datasource persistence-unit


    【解决方案1】:

    数据源是对任意数据集合的抽象。通常情况下,您的架构可能是您的数据源。数据源粒度完全取决于您,但我想更粗粒度的数据源具有更好的设计。 因此,您需要一个persistence unit 和一个EntityManagerFactory。 在一个简单的场景中,您可以像这样定义您的 bean:

    <bean id="datasource"
              class="org.springframework.jdbc.datasource.DriverManagerDataSource"
              p:url="datasource url"
              p:username="your uname"
              p:password="your pass"
              p:driverClassName="dirver name"/>
    
        <bean id="persistenceProvider"
              class="org.hibernate.jpa.HibernatePersistenceProvider"/>
    
        <bean id="entityManagerFactory"
              class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
              p:packagesToScan="your model packages"
              p:dataSource-ref="datasource"
              p:persistenceProvider-ref="persistenceProvider" />
    

    【讨论】:

    • 好的,感谢您对数据源的解释。所以关于持久性单元,有一个很好,但是你如何引用 2 个不同的表?
    • 在传统的four-tier 架构中,定义代表不同表的models,然后将数据访问功能放在Data Access Layer 上,并将这些功能组合在Service Layer 中。通常,服务层方法是Transactional。如果你打算使用 Spring,那么 Spring 文档在这个主题上做得很好。你应该check it out。另请查看提供通用数据访问功能的Spring-Data 项目
    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多