所以我参与了一个使用Apache Karaf作为Web服务框架的项目。我们正在使用OSGi开发捆绑包以提供服务。
我只是想通过这些捆绑包来理解数据库访问的高级架构,而且我无法通过Google搜索找到任何可靠的信息 - 一切看起来都很分散。
基本上我们使用的是JPA,持久性单元(persistence.xml?)和DataSource。所有这些对我来说都很混乱。如果我有一个需要将数据写入数据库的“Hello World”软件包,那么这里的一般工作流程是什么,以及上述每个组件的使用情况如何?这个架构的整体“图表”是什么?什么是捆绑,什么不捆绑?
我是JAVA的新手,现在有很多东西需要跟踪,所以希望在这里有所帮助!提前谢谢!
答案 0 :(得分:1)
要解决的第一件事是db驱动程序的抽象。由于类加载,使用DriverManager.getConnection的默认Java方法在OSGi中不能很好地工作。它可以通过提供和使用DataSource作为OSGI服务来解决。
接下来是设置JPA。这是Aries JNDI支持的,它允许在peristence.xml中使用jndi引用DataSource OSGi服务。
这个难题的最后一部分是容器管理持久性,由白羊座JPA支持。
您可以在下面找到显示所有这些概念的教程。演示项目examplejpa展示了它们如何协同工作。
http://liquid-reality.de/display/liquid/2012/01/13/Apache+Karaf+Tutorial+Part+6+-+Database+Access
https://github.com/cschneider/Karaf-Tutorial/tree/master/db/examplejpa