我必须编写一个程序,可以预订,存储它们,然后在以后访问它们,应用程序必须用Java编写。因此,我一直在研究使用Java数据库的各种方法。
我一直在研究将JDBC与mySQL驱动程序数据库一起使用,并研究javaDB。你有什么建议我创建这个程序,有没有人有任何编写在java中使用数据库的程序的经验,并可以给我任何提示?
谢谢!
答案 0 :(得分:3)
我确信每个Java开发人员都编写了一个使用JDBC与数据库通信的应用程序。许多人使用Spring JDBC包装器或ORM等完整版Hibernate之类的东西,可以相当快地停止使用原始JDBC。所有这些都会使编写数据库层变得更容易一些但我通常觉得你应该在深入了解之前了解发生了什么。理解。
那么进程内还是专用数据库问题?这取决于。一次会有多少人访问该应用程序? (如果您需要多个人访问同一个数据库,那么进程内数据库将毫无用处)。你有多少环境控制权? (如果你不能安装它,那么建议使用专用数据库是浪费时间)。应用程序基于Web还是桌面应用程序? (基于Web的解决方案可以使用进程内数据库并允许多个用户访问它)。数据有多重要? (进程内数据库不太可能具有与专用数据库相同级别的备份解决方案。)
答案 1 :(得分:2)
在您的情况下,我将使用Java6和Java DB(又名Derby)。这并不是说安装和使用MySQL很复杂(实际上它很简单)但是,如果你已经拥有一个有能力的数据库,为什么要这样做?
说到这里,要开始使用JavaDB,看一下Java DB Reference,那里有很多技术文章。请特别注意Working with the Java DB (Derby) Database - NetBeans IDE 6.5 Tutorial。
对于数据访问本身,您可以像Creating a Custom Java Desktop Database Application中一样使用Java Persistence API(JPA)。但我不会那样做作业。相反,我从基础知识开始,即使用JDBC,并手动完成所有工作。你提到它,我认为这是一个好主意。看一下Tutorial: Java databasing with Derby, Java's own open source database,它可能非常有用(我不是说那里显示的代码可以促进所有最佳实践,但它非常简单并且可以帮助您入门)。
不要使用连接池等高级主题来污染你的思想,不要使用像Hibernate,JPA甚至Spring这样的框架(这些框架知道如何做事,你不这样做,关键是不要学习使用框架,至少现在不是这样)。保持简单和性感,但手工完成。
答案 2 :(得分:1)
一种非常简单的方法是使用Spring的JDBC类,它们提供了许多比原始JDBC更方便的方法,并自动管理资源的释放。 Spring还提供了丰富的异常层次结构,允许根据特定错误采取特定操作(例如,重试数据库死锁)。
此外,与许多其他持久层不同,Spring不会隐藏JDBC实现(它充当薄层),允许您在必要时使用原始JDBC。
<强>初始化强>
// First create a DataSource corresponding to a single connection.
// Your production application could potentially use a connection pool.
// true == suppress close of underlying connection when close() is called.
DataSource ds = new SingleConnectionDataSource("com.MyDriver", "Database URL", "user", "password", true);
// Now create a SimpleJdbcTemplate passing in the DataSource. This provides many
// useful utility methods.
SimpleJdbcTemplate tmpl = new SimpleJdbcTemplate(ds);
SQL更新(或插入)
// Simple example of SQL update. The resources are automatically release if an exception
// occurs. SQLExceptions are translated into Spring's rich DataAccessException exception
// hierarchy, allowing different actions to be performed based on the specific type of
// error.
int nRows = tmpl.update("update Foo set Name = ? where Id = ?", "Hello", 5);
assert nRows == 1;
SQL查询
// Example of SQL query using ParameterizedRowMapper to translate each row of the
// ResultSet into a Person object.
tmpl.query("select * from Person", new ParameterizedRowMapper<Person>() {
Person mapRow(ResultSet rs, int rowNum) {
return new Person(rs.getString("FirstName"), rs.getString("LastName"));
}
});
答案 3 :(得分:1)
Sun在线提供了两个您可能认为有用的JDBC教程,JDBC Introduction和JDBC Basics。这些是更大的Java Tutorials系列的一部分,它们有很多很好的信息。当我遇到一些我不知道如何用Java做的事情时,它们通常是我看的第一个地方。
答案 4 :(得分:0)
查看以下示例:http://www.roseindia.net/jdbc/jdbc-mysql/。关于在MySQL中使用JDBC的许多代码示例。
答案 5 :(得分:0)
我当然可以推荐JavaDb(Java 6附带的数据库)。它原来是IBM的Derby数据库,非常强大。它与Java程序(作为独立进程运行,或与客户端程序在同一个VM中)很好地集成。您不必担心额外的non_Java安装(这可能很重要,具体取决于您部署的方式/位置)。
如果您需要/需要ORM(对象关系映射),Hibernate是事实上 Java标准这些天(here's an introduction)。但是,如果这对您的项目来说太过分了,至少请查看Apache Commons DbUtils,这会减少很多样板代码。