如何把java对象存入数据库

Python023

如何把java对象存入数据库,第1张

假设有这么个对象

import java.io.Serializable

public class MyObject implements Serializable {

private static final long serialVersionUID = 1L

private int i

public int getI() {

return i

}

public void setI(int i) {

this.i = i

}

}

//测试 的方法如下

import java.io.ByteArrayInputStream

import java.io.ByteArrayOutputStream

import java.io.IOException

import java.io.ObjectInputStream

import java.io.ObjectOutputStream

import java.sql.Connection

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

public class test {

public static void main(String[] args) throws IOException,

ClassNotFoundException {

MyObject obj = new MyObject()

obj.setI(4567)

write(Object2Bytes(obj))

// read()

}

public static void write(byte[] b) throws ClassNotFoundException {

System.out.println(b.length)

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

try {

Connection con = DriverManager.getConnection("jdbc:odbc:temp")

String sql = "insert into tab values(?)"

PreparedStatement pstmt = con.prepareStatement(sql)

pstmt.setBytes(1, b)

pstmt.execute()

pstmt.close()

con.close()

} catch (Exception e) {

e.printStackTrace()

}

}

public static void read() throws ClassNotFoundException {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

try {

Connection con = DriverManager.getConnection("jdbc:odbc:temp")

String sql = "select * from tab"

PreparedStatement pstmt = con.prepareStatement(sql)

ResultSet res = pstmt.executeQuery()

while (res != null &&res.next()) {

byte[] b = res.getBytes("key")

System.out.println(b.length)

MyObject obj = (MyObject) Bytes2Object(b)

System.out.println(obj.getI())

}

pstmt.close()

con.close()

} catch (Exception e) {

e.printStackTrace()

}

}

// 将对象转换成字节数组

public static byte[] Object2Bytes(Object obj) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream()

ObjectOutputStream oos = new ObjectOutputStream(baos)

oos.writeObject(obj)

return baos.toByteArray()

}

// 将字节数组转换成为对象

public static Object Bytes2Object(byte[] b) throws IOException,

ClassNotFoundException {

ByteArrayInputStream bais = new ByteArrayInputStream(b)

ObjectInputStream ois = new ObjectInputStream(bais)

Object obj = ois.readObject()

return obj

}

}

对象和关系再映射存入数据库。

将对象映射到数据库的关系上类对应表,字段对应列,聚合字段对应一对多或者多对多,这样用起来很方便,可以只写java就完成数据库操作可能还要写jpql,对于简单的逻辑可以用criteria,纯对象化的查询,java有个ORM的规范,叫JPA,hibernate实现了JPA,它还有EclipseLink等实现。