【发布时间】:2015-01-20 14:47:09
【问题描述】:
我想进一步澄清我的问题:
我了解使用 SPring 框架(即容器管理的对象生命周期)和 Hibernate(在 Java 对象和关系数据库系统之间使用 ORM - 阻抗不匹配解决方案)的目的。
我了解我们如何自动装配对象,并且 Spring 通过查看
applicationContext.xml文件(如果使用 Hibernate 或任何其他持久性提供程序,除了 persistence.xml 文件)在运行时接管对象的创建和销毁)。
我想做的是:
我想实现自己的购物服务。我已经有用@Table、@Id、@Column 等注释的实体(项目)来告诉 JPA 这将存储在数据库中。
-
我已经有一个由 DaoImpl 类实现的 DAO 接口(目前只有添加和删除方法),我在其中完成了以下操作:
@Repository @Transactional public class MyShopDbDaoImpl implements MyShopDbDao { // The following named unit will be in my persistence.xml file // Which will be placed in src/main/resources/META-INF folder @PersistenceContext(unitName="myShopDbDao") private EntityManager em; // Getters for em (simply returns em) // Setters for em (simply assigns an em supplied in the args.) // Other query method } -
我还有一个 ShopDbController 控制器类,它使用:
@Autowired // defined in the applicationContext.xml file private MyShopDbDao myShopDbDaoImpl
我正在努力解决的是对EntityManagerFactory 和EntityManager 关系的“理解”以及必须如何管理事务。我知道以下层次结构是理解这一点的主要起点:
客户端与控制器对话。
控制器映射请求并让实体管理器对数据库(具有 JUNIT 测试等的测试/本地数据库或实际 SQL 类型的数据库)进行查询和填充。
我所知道的是事务可以手动管理(即开始、提交和关闭会话)或通过 Spring 容器(即在 applicationContext.xml 文件中使用 bean defs)。如何获取有关 entitymanagers 和 entitymanagerfactory 的更多信息以设置我的系统?
我没有发现 Oracle/Spring/Hibernate 的在线文档很有帮助。我需要一个例子和关于 entitymanagerfactory、sessionfactory、entitymanager 和 transactionmanager 之间关系的解释。有人可以帮我解决这个问题吗?
我不需要人牵着我的手,只要把我引向正确的方向。我以前做过 Spring 项目,但从来没有深入了解过一些东西。任何帮助表示赞赏。
【问题讨论】:
-
阅读这篇优秀的blog 以了解这些概念。
-
@FlyingGuy 我是在用 C++ 编写我的类以与 Hibernate 和 Spring 一起使用吗?
-
@ha9u63ar - 这与 java 语言无关。它与恰好在 java 中实现的两个框架有关,因此我的评论。