我将如何保存一个Java程序的状态,以便如果我不得不从dist文件夹复制它仍然可以在另一台计算机上工作而不需要另一台计算机有MySQL的安装等其他方法来实现Java以外的持久化MySQL
回答
,您可以使用100个%纯Java的关系数据库,如Apache Derby,H2 Database engine或HyperSQL。从Java 6开始,SDK包含Derby,作为JavaDB。 Java DB 10 (JDK 8) documentation中有Getting Started Guide。
您可以将.jar
文件包含在您的项目中,并使用JDBC连接使用数据库,而无需安装任何其他软件。应用程序服务器(如Glassfish和JBoss)默认使用Derby和H2作为示例数据库和JMS消息。通常,管理员在生产中更改该数据库(使用不同的JDBC URL连接)。
使用注意事项JavaDB之外或Derby
德比(和JavaDB之外)可以作为network server or an embedded one运行。 网络服务器允许来自多个用户/程序的连接。一个嵌入式服务器只适用于启动引擎的应用程序。这两种服务器类型都包含在.jar
文件中,您可以使用JDBC和库API来控制它们。
对于网络服务器,则必须启动服务器,并使用像
jdbc:derby://localhost:1527/dbname;create=true
一个JDBC URL连接,其中一个端口和一个数据库中定义或如jdbc:derby://localhost:1527/c:\temp\myDatabase;create=true
与数据库的位置的连接。您可以检查Vogella's tutorial for Apache Derby// use the Derby JDBC driver Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); // connect to the database Connection connect = DriverManager .getConnection("jdbc:derby://localhost/c:/temp/db/FAQ/db"); // execute a Query PreparedStatement statement = connect .prepareStatement("SELECT * from USERS"); ResultSet resultSet = statement.executeQuery(); :
对于嵌入式服务器,则必须使用不同的JDBC驱动程序和网址。连接URL与
jdbc:derby:MyDbTest;create=true
类似,不包含端口。有一个解释在Derby's documentation。// use the Embedded Derby JDBC driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); // connect to the database Connection connect = DriverManager .getConnection("jdbc:derby:MyDBTest;create=true"); // execute a Query PreparedStatement statement = connect .prepareStatement("SELECT * from USERS"); ResultSet resultSet = statement.executeQuery(); :
非常感谢你,我会考虑 – Gcairns
方法1: 如果像你没有非常复杂的数据将保存在一个数据库中的表,你可以使用例如简单的配置文件。
方法2: 否则,你可以只使用sqllite数据库。这就像一个文件中的数据库,它不需要运行服务器。
方法3: 你可以使用一个远程数据库。你可以从任何地方访问数据。 (即使没有每次复制应用程序)
方法4: 使用“Java”数据库,例如H2。
方法...:还有很多其他的事情可以做到!取而代之的MySQL
谢谢你的想法,看看可能会尝试几个,看看更适合什么 – Gcairns
- 1. 最好的方式来实现android方向变化时的数据持久性?
- 2. 如何实现持久化Python列表?
- 3. java实现与其他方法的接口
- 4. Wicket - 持久化和非持久JPA实体的序列化
- 5. drools持久化与mysql,无法获得流程实例
- 6. MySQL的变化来自其他行
- 7. 持久哈希表实现
- 8. 持久队列实现
- 9. DDD并实现持久性
- 10. Delayer持久MessageStore实现
- 11. 实现透明持久性
- 12. 调用外部方法实际上调用其他方法
- 13. 持久化内存队列的JPA(或其他选择)
- 14. Java持久性,数据库实体和其他模型之间的通信
- 15. 使用Mosquitto持久化mysql的外部数据库
- 16. 运行java applet的调用方法(来自java,C++或其他)
- 17. 如何从操作方法以外的其他支持功能返回ViewModel
- 18. 除getChildByName()之外的其他获得实例的方法
- 19. Java持久实体最佳实践
- 20. 在JPA/Hibernate中映射到MySQL视图的持久化实体
- 21. 持久性 - 实体类vs Hibernate框架vs其他
- 22. mysql中的Java持久性单元
- 23. 持久化实体中的InstantiationException
- 24. 使用实体字段可以持久化JPA实体吗?
- 25. Yesod访问来自小村庄的持久化实体ID
- 26. jQuery Mobile Pages以外的持久性HTML
- 27. NHibernate:当持久化对象出现意外会话故障
- 28. MySQL的来自其他表
- 29. Java以某种方式支持.htaccess还是有其他选择?
- 30. mySQL中的连接与其他方法
你的意思是DB的 “项目状态”?然后:远程数据库,文件中的“数据库”,使用“h2数据库”的数据库初始化脚本。 – Pijotrek