db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Knut Anders Hatlen <Knut.Hat...@Sun.COM>
Subject Re: Newbe: JAVA_OBJECT best type to store as ?
Date Fri, 08 Feb 2008 08:20:55 GMT
bruehlicke <bruehlicke@gmail.com> writes:

> Any example out there for storing a java "Properties" object ?
>
> 1) What type shall the Table Column have ? BLOB ? CLOB ?
>
> 2) Any example of how to do this ?
>
> My assumption until now is that I have to create a BLOB and serialize and
> de-serialize the "Properties" object. The latest I found on this was from
> Bernt http://www.mail-archive.com/derby-user@db.apache.org/msg06658.html.
> So I just need confirmation on the Column type I should choose.
>
> You need to serialize the object. One way of doing it is like this:
>
>         ByteArrayOutputStream bos = new ByteArrayOutputStream();
>         ObjectOutputStream oos = new ObjectOutputStream(bos);
>         oos.writeObject(item);
>         oos.close();
>         ps.setBytes(1, bos.toByteArray());
>
> An vice versa when you retrive the object

Yes, that's the way to store a Java object in Derby, unless you use some
kind of object persistence or object-relational mapping framework on top
of Derby, and BLOB is the data type you need.

For Properties objects, you could alternatively use a CLOB/VARCHAR,
since Properties contains its own serialization method that outputs
plain text. The advantage of using a CLOB/VARCHAR instead of a BLOB, is
that it is easier to inspect the contents of the object in tools like
ij.

Then you'd do something like this (untested):

StringWriter sw = new StringWriter();
properties.store(sw, null);
ps.setString(1, sw.toString());

and to restore the object

Reader reader = rs.getCharacterStream(1);
Properties properties = new Properties();
properties.load(reader);

-- 
Knut Anders

Mime
View raw message