`
jallay
  • 浏览: 43931 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

用jdbc实现对象与数据库表中记录的同步

阅读更多
java主要是面向对象的语言,因此,我们大多数操作的都是对象。我们如何将对象的信息存入到数据库中去了,其主要分为三步:
    1):写出实体类的JavaBean
    2):在数据库中建立与之对应的表记录
    3): 根据需求写出dao层
  (注:一般的,每一个对象都有唯一的一个OID(object ID),与数据库中表的ID一一对应。对象之间的关系在表之间中主要也反映为主外键的关系(假如对象在内存中没有OID,对象中表的跟新与查询变得相当的困难)。
  即:一旦一个对象在数据库表中有相应的记录,就会有相应的OID,这样的一个对象也就是一个持久化的对象,此时,如果跟新内存中该对象的值,提交之后就可以反映到数据库中去。如果一个对象在表中没有相应的记录,此时,该对象为一个临时对象,当该对象在很长一段时间没有被使用时就会被GC清理掉。)
以下是一个用JDBC实现对象存储的简单列子:

1:person的javabean

public class Person {
	
	private Integer id;//对象OID
	private String name;
	private String address;
	private String personId;
	
	public Person() {
		super();
	}

	public Person(String name, String address, String personId) {
		super();
		this.name = name;
		this.address = address;
		this.personId = personId;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer cid) {
		this.id = cid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getPersonId() {
		return personId;
	}

	public void setPersonId(String personId) {
		this.personId = personId;
	}
	
}


2:创建与之对应的表:
create sequence jdbc_person_sequence;//id通过该序列产生
create table person
(
id number(7) primary key,
name varchar2(20) not null,
address varchar2(30) not null,
personId varchar2(21) not null
);

3:用JDBC实现dao层:
import java.sql.*;
import com.UtilTool.*;
public class Dao_Person {
	
	/*
	 * function: insert a new personInfo into the person table 
	 * variable:insert a new personInfo
	 * */
	public void addPersonInfo(Person person)throws Exception{
		Connection connection=null;
		PreparedStatement pstm=null;
		try{
		person.setId(this.getIdSequence());//set the object ID from the method;
		 connection=ConnectTool.getConnection();//get current connection 
		 connection.setAutoCommit(false);//manual control the transaction commit
		String sql="insert into person(id,name,address,personId) values(?,?,?,?)";
		 pstm=connection.prepareStatement(sql);
		pstm.setInt(1, person.getId());
		pstm.setString(2, person.getName());
		pstm.setString(3, person.getAddress());
		pstm.setString(4, person.getPersonId());
		pstm.execute();
		connection.commit();
		}finally{
			ConnectTool.releasersc(null, pstm, null);//colse the Result and the pstm
		}
	}
	
	/*
	 * function:delete a person's information from table 'person'
	 * variable:the person you will delete
	 * */
	public void deletePersonInfo(Person person)throws Exception{
		Connection connection=null;
		PreparedStatement pstm=null;
		try{
		 connection=ConnectTool.getConnection();
		 connection.setAutoCommit(false);
		String sql="delete from person where id=?";
		 pstm=connection.prepareStatement(sql);
		pstm.setInt(1, person.getId());
		pstm.executeUpdate();
		connection.commit();
		}finally{
			ConnectTool.releasersc(null, pstm, null);
		}
		
	}
	
	/*
	 * function:modify the person's information in the table 'person'
	 * variable: person information you will update.
	 * */
	public void updatePersonInfo(Person person)throws Exception{
		Connection connection=null;
		PreparedStatement pstm=null;
		try{
		 connection=ConnectTool.getConnection();
		 connection.setAutoCommit(false);
		String sql="update person set name=?,address=?,personId=? where id=?";
		 pstm=connection.prepareStatement(sql);
		pstm.setString(1, person.getName());
		pstm.setString(2, person.getAddress());
		pstm.setString(3, person.getPersonId());
		pstm.setInt(4, person.getId());
		pstm.execute();
		connection.commit();
		}finally{
			ConnectTool.releasersc(null, pstm, null);
		}
		
		
	}
	/*
	 * function:get a person information by the persons's OId
	 * variable:person'OId you want to query.
	 * */
	public  Person  queryPersonInfo(Integer OId)throws Exception{
		Connection connection=null;
		PreparedStatement pstm=null;
		ResultSet rs=null;
		Person person=null;
		try{
		 connection=ConnectTool.getConnection();
		String sql="select * from person where id=?";
		 pstm=connection.prepareStatement(sql);
		pstm.setInt(1, OId);
		rs=pstm.executeQuery();
		if(rs.next()){
			person=new Person();
			person.setId(rs.getInt(1));
			person.setName(rs.getString(2));
			person.setAddress(rs.getString(3));
			person.setPersonId(rs.getString(4));
		}
		}finally{
			ConnectTool.releasersc(rs, pstm, null);
		}
		return person;
	}
	
	/*
	 * get the OId from the sequence jdbc_person_sequence
	 * */
	private Integer getIdSequence()throws Exception{
		Connection con=null;
		PreparedStatement pstm=null;
		ResultSet rs=null;
		Integer OId=null;
		try{
			con=ConnectTool.getConnection();
			String sql="select jdbc_person_sequence.nextVal from dual";
			pstm=con.prepareStatement(sql);
			rs=pstm.executeQuery();
			rs.next();
			OId=rs.getInt(1);
			
			
		}finally{
			ConnectTool.releasersc(rs, pstm, null);
		}
		return OId;
	}

}

以下是对上述代码的测试:
import java.sql.Connection;
import com.UtilTool.*;
public class Test {
	public static void main(String args[])throws Exception{
		Connection conn=ConnectTool.getConnection();
		Dao_Person dao=new Dao_Person();
		Person person=dao.queryPersonInfo(6);
		
		//dao.addPersonInfo(person);
		//dao.deletePersonInfo(person);
		person.setName("good morning");
		dao.updatePersonInfo(person);
		ConnectTool.releasersc(null, null, conn);
	}

}



   
分享到:
评论

相关推荐

    基于jdbc的异构数据库记录复制

    本文将深入探讨“基于jdbc的异构数据库记录复制”这一主题,结合给定的描述和标签,我们将了解如何利用Java JDBC(Java Database Connectivity)技术在SQL Server、Oracle和Informix这三种不同的数据库系统之间实现...

    java 笔记 JDBC

    它们的生命周期与数据库记录绑定,创建、删除和更新都会影响数据库操作。 3. **MessageDriven Beans (MDB)**:EJB 2.0引入,主要用于处理JMS消息。MDB异步工作,接收并处理JMS消息,适合处理不需要立即响应的业务...

    JDBC与java数据库编程

    - **性能影响:** 使用JDBC可能会降低访问数据库记录的速度。 - **数据源更换困难:** 需要适配不同厂商的产品,可能增加开发成本。 #### 第二章:JDBC基础应用 **2.1 连接数据库** - **使用DriverManager:** ...

    java实现两个mysql同步主库的数据

    接下来,我们要在Java中实现这个功能,关键步骤如下: 1. **连接数据库**:使用JDBC(Java Database Connectivity)API来连接到MySQL数据库。你需要配置数据库URL、用户名、密码等信息,创建Connection对象。 2. *...

    JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库

    本文将深入探讨如何使用Java编程语言实现从一个数据库中定时自动抽取数据并复制到另一个数据库,以达到数据库间的实时或近实时同步。 首先,我们需要了解基础概念。Java是一种广泛使用的面向对象的编程语言,具有...

    黑马程序员JavaEE就业班同步笔记数据库相关:JDBC操作.pdf

    + 一个软件创建一个数据库,有一个实体类创建一个表与之对应,实体的实例对象通常使用表中的记录与之对应。 SQL * 结构化查询语言。 * SQL的分类: + DDL(数据定义语言):create、alter、drop等。 + DML...

    数据库表生成对应的java类

    此外,当数据库表结构发生变化时,只需重新运行生成器,即可快速更新Java代码,保持与数据库同步。 总的来说,这个资源对于任何使用Java进行数据库操作的项目来说都是非常有价值的,它简化了数据库与Java代码之间的...

    JDBC数据库操作值MySQL批处理操作

    在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一组接口和类。MySQL批处理是JDBC提供的一种优化数据库操作的方法,它允许开发者一次提交多个SQL语句,从而提高数据处理效率。本文将...

    android通过JDBC直接访问Mysql数据库[归类].pdf

    在Android应用程序中,通过JDBC(Java Database Connectivity)直接访问MySQL数据库是一种常见的数据交互方式,尤其是在需要实时同步或处理大量数据的场景下。以下将详细解释这个过程中的关键知识点: 1. **JDBC...

    WebMagic抓取CSDN博客通过JDBC保存到数据库中去

    本项目是关于如何使用WebMagic抓取CSDN(China Software Developer Network)博客的内容,并通过JDBC(Java Database Connectivity)将其保存到数据库中的实例。下面将详细介绍这个过程涉及的关键知识点。 1. **...

    spring integration同步数据库数据

    在这个场景中,我们关注的是如何使用Spring Integration来实现数据库数据的实时或定期同步。 首先,`jdbc-inbound`标签暗示了我们将讨论的是JDBC(Java Database Connectivity)适配器,这是Spring Integration中...

    基于java开发的功能强大、配置灵活的数据库之间的同步工具

    标题中的“基于java开发的功能强大、配置灵活的数据库之间的同步工具”揭示了这是一个使用Java编程语言构建的软件,它的主要功能是实现不同数据库之间的数据同步。这种工具在数据迁移、数据备份、多环境数据一致性...

    实现Castor数据绑定,第4部分把Java对象绑定到SQL数据库.pdf

    在Java开发中,数据绑定是一种将对象模型与数据源(如XML文档或SQL数据库)之间自动同步的技术。Castor是一个强大的数据绑定框架,它不仅支持Java对象与XML之间的转换,还允许将Java对象直接绑定到SQL数据库,简化了...

    java代码操作数据转移,把一个数据库里的东西移动到另一个数据库,自动建库建表

    总之,使用Java和MySQL JDBC驱动进行数据库迁移是一个复杂但可实现的过程,涉及到数据库连接、元数据查询、SQL脚本执行等多个步骤。通过合理的编程和错误处理,可以构建一个可靠的自动化迁移工具。

    java实现数据库增删改查

    JDBC是Java中与数据库交互的标准API,允许开发者执行SQL语句并处理结果。使用JDBC,我们需要加载数据库驱动,建立连接,创建Statement或PreparedStatement对象,执行SQL,最后关闭资源。 2. **数据库连接池**: ...

    Java高级教程课件 java数据库教程 JDBC教程 2-oracle基础(1)(共48页).ppt

    综上所述,Java高级教程中包含的Oracle基础和JDBC内容,是开发者深入理解和使用Java与Oracle数据库集成的关键。通过这些教程,开发者可以学习到如何有效地连接、查询和管理Oracle数据库,同时掌握多线程在数据库操作...

    数据库之间的数据传递

    通过分析和运行这些代码,你可以更深入地了解如何在实际项目中实现数据库之间的数据传递。 总结来说,Java为MySQL和SQL Server之间的数据传递提供了一种有效且灵活的解决方案。通过熟练掌握JDBC API,理解数据库...

    Java数据库编程ppt

    此外,还有ORM(Object-Relational Mapping)框架,如Hibernate和MyBatis,它们简化了Java应用与数据库之间的交互,通过将对象与数据库表映射,减少了手动编写SQL的复杂度。 总之,Java数据库编程涉及到数据库理论...

    Struts用JDBC的Blob字段保存和读取Oracle数据库

    本文将详细介绍如何使用Struts结合JDBC操作Oracle数据库中的Blob字段实现文件的保存和读取。 #### 代码分析 根据提供的部分代码示例,我们可以将其分为两个主要部分:文件保存和文件读取。 ##### 文件保存 文件...

Global site tag (gtag.js) - Google Analytics