我正在研究一个独立的Java项目(不是Java EE),我目前正在学习JDBC,我正在创建一个数据库,其中包含员工信息,如个人信息,联系信息,员工信息和税务信息,所有这些都是相互引用的类,它们有setter和getter,我想知道如何在数据库中插入它们的数据值/表我在数据库中创建?简而言之,我有一个Employee一个Employee对象,像这样
Employee(PersonalInformation information,ContactInformation cInformation)
诸如此类,我如何将他们的数据添加到我在数据库中创建的表中?
我如何将他们的数据添加到我在数据库中创建的表中?
通过使用JDBC向数据库发送INSERT语句,对象图中的每个对象对应一个INSERT语句(假设每个类有一个表)。
是的,这是一大堆无聊的、重复的代码,很可能包含错误,而且维护起来相当麻烦。
这就是为什么人们编写了像Hibernate这样的对象关系映射器,并且有一个称为JPA的Java标准。这是Java EE的一部分,但这并不意味着您必须运行Java EE服务器才能使用它。
Update: OK,所以你不能使用ORM,可能是因为你应该首先理解JDBC是如何工作的,这是有道理的,因为ORM是基于JDBC的,有时当出现问题时你必须下到那个级别。
当直接使用JDBC时,您通常会创建一个DAO(数据访问对象)层,该层负责向数据库写入和读取对象。为了处理嵌套对象,一个DAO可以调用另一个DAO。
不,dao不在setter和getter中调用。由应用程序中响应用户输入的部分调用。例如,当用户打开应用程序并且开始屏幕显示员工列表时,您将调用EmployeeDAO.findAll()
方法,当用户更改员工并单击"保存"时,您将调用EmployeeDAO.save()
方法。
我建议您查看Spring的JdbcTemplate (http://www.java2s.com/Code/Java/Spring/ControlParameterTypeInJdbcTemplateQuery.htm)
它看起来像这样:
SingleConnectionDataSource ds = new SingleConnectionDataSource();
ds.setDriverClassName("org.hsqldb.jdbcDriver");
ds.setUrl("jdbc:hsqldb:data/tutorial");
ds.setUsername("sa");
ds.setPassword("");
JdbcTemplate jt = new JdbcTemplate(ds);
jt.execute("insert into employee (id, name) values (?, ?)", 1, "Tom");
这可能对你有帮助
- 将所有需要的值传递给相应的对象。
获取所有值并使用这些值构建查询,如
Employee em = new Employee(perinfo, continfo); String emp_per_info = em.getSomeInfo(); // it this returns a string ... //so on query="insert into table_name values(variables go here);"
如果不成功请告诉我
你要做的是所谓的"对象到关系映射"。您拥有组成对象域的java对象,以及组成关系模型的DB表。你要把它们联系起来。保存数据并查询以获取它们。您有两种方法来编写自己的有限框架或使用现有框架。现有框架包括:
- Hibernate
- iBatis