カラムをいちいち作ってもいいんだけど、割りとクラスの構成が面倒くさいのでBlob型で保存することにした。
という訳で、オブジェクトをByte配列に変換したり戻したりするメソッドを実装しますか。
Byte配列に変換
public byte[] toByte() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(this); } catch (IOException e) { // TODO: handle exception return null; } return baos.toByteArray(); }
バイト配列から変換
public static Party byteToParty(byte[] b) { Party p = null; try { p = (Party) new ObjectInputStream(new ByteArrayInputStream(b)) .readObject(); } catch (OptionalDataException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (StreamCorruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return p; }
JUnit使って動作確認。テストケースはこれで。
public void testToByte() { byte[] b = party.toByte(); assertNotNull(b); } public void testByteToParty() { byte[] b = party.toByte(); Party p = Party.byteToParty(b); assertEquals(p.getDate(), date); assertEquals(p.getTime(), time); assertEquals(p.getPlace(), place); assertEquals(p.getperson(), person); assertEquals(p.getKeyword(), keyword); assertEquals(p.getPlaceBy(), placeBy); }
問題なくテストを通ったから良いでしょう。
0 件のコメント:
コメントを投稿