我目前正朝着JPA 2.0迈进,我开始喜欢维护持久数据是多么容易。
我目前要完成的是在基本桌面应用程序中使用JPA。该应用程序应该允许我打开我的文件系统上的嵌入式数据库。我现在选择H2数据库,但我真的可以切换到JavaDB或其他任何东西。
我想要完成的是,可以打开数据库文件,而无需事先在persistence.xml文件中定义持久性单元。 我可以轻松定义一个单元并持久保存对象,但需要先配置它。
我想编写某种数据库浏览器,允许在没有预配置和重新编译的情况下打开。
http://www.objectdb.com/java/jpa/start/connection
我看到ObjectDB允许访问此类PersistenceFactory创建,但我无法将此示例传输到其他数据库。
我对这个问题的处理方式完全错了吗? JPA是不是设计有动态数据库访问?
感谢您的帮助, 约翰内斯
答案 0 :(得分:2)
不属于JPA标准。某些实现可能会提供自己的API来执行此操作。例如,对于DataNucleus,如果你最后转到这个页面http://www.datanucleus.org/products/accessplatform_3_0/jpa/persistence_unit.html,你可以创建动态持久性单元(以及EMF),这种实现显然允许持久化到你可以获得的最广泛的数据存储
答案 1 :(得分:2)
您可以将属性Map传递给createEntityManagerFactory()调用,该调用定义数据库连接信息等。属性名称与persistence.xml中的属性名称相同。我假设大多数JPA提供者支持这一点,EclipseLink确实支持。
您仍然需要为数据库定义一组类并映射它们。
如果您没有任何课程,那么您可以查看EclipseLink的动态支持,
答案 2 :(得分:1)
如果要使数据库浏览器访问不同的数据库,则不能使用PU /实体管理器(imo)。
您需要一个对话框询问用户数据库的IP /端口,用户名/密码,要访问的数据库名称以及数据库的类型。
然后,您需要做的就是创建套接字,通过套接字发送请求,并将响应解析为视图。 由于请求和响应都是特定于数据库的,因此用户必须选择正确的数据库驱动程序。