Neodatis を使ってみた。
前に戻る
Neodatis というオープンソースのオブジェクト指向データベースを使ってみた。
日本語を扱うには、最初にこいつを呼び出しておく必要があるようだ。
これを呼ばないと、文字化け状態。
org.neodatis.odb.OdbConfiguration.setDatabaseCharacterEncoding ("UTF-8");
ドキュメントでは以下のようになっている
Chapter 14. Database Encoding
NeoDatis uses "ISO8859-1" as its default encoding.
The OdbConfiguration.setDatabaseCharacterEncoding(Java Encoding) can be called to set the
desired encoding.
The OdbConfiguration.setLatinDatabaseCharacterEncoding() uses the ISO8859-1 encoding
and is suitable for most of Latin languages applications.
Warning 1 :Encoding must always be configured before opening the NeoDatis database
Warning 2 :In client server mode, the correct encoding must be set on both client and server side.
以下は、作ってみたサンプル。
// ----------------------------------------------------------------------------------------------------
package com.keystonebrand.squid.model;
import java.util.Vector;
import com.keystonebrand.squid.lib.KsIcallBackBasic;
import org.neodatis.odb.*;
import org.neodatis.odb.core.query.*;
import org.neodatis.odb.core.query.criteria.Where;
import org.neodatis.odb.impl.core.query.criteria.CriteriaQuery;
public class KsNeodatis implements KsIdbAccess {
private String dbpath = null;
private static ODB objectContainer = null;
public KsNeodatis() {
this.dbpath = com.keystonebrand.squid.property.KsInformation.dbpath;
}
public KsNeodatis(String aDbPath) {
try
{
if (aDbPath != null)
{
com.keystonebrand.squid.property.KsInformation.dbpath = aDbPath;
this.dbpath = com.keystonebrand.squid.property.KsInformation.dbpath;
}
}
catch(Exception e)
{
com.keystonebrand.squid.property.KsInformation.getLogger().warning(e.getMessage());
}
}
public <T> void regist(T aObject) {
try
{
getOC().store(aObject);
}
catch(Exception e)
{
com.keystonebrand.squid.property.KsInformation.getLogger().warning(e.getMessage());
}
}
public static ODB openObjectContainer(String aDbPath)
{
try
{
org.neodatis.odb.OdbConfiguration.setDatabaseCharacterEncoding ("UTF-8");
if (KsNeodatis.objectContainer == null)
{
KsNeodatis.objectContainer = ODBFactory.open(aDbPath);
}
}
catch(Exception e)
{
com.keystonebrand.squid.property.KsInformation.getLogger().warning(e.getMessage());
}
return KsNeodatis.objectContainer;
}
public static void closeObjectContainer()
{
try
{
if (KsNeodatis.objectContainer != null)
{
KsNeodatis.objectContainer.close();
KsNeodatis.objectContainer = null;
}
}
catch(Exception e)
{
com.keystonebrand.squid.property.KsInformation.getLogger().warning(e.getMessage());
}
}
}
// ----------------------------------------------------------------------------------------------------
package com.keystonebrand.squid.property;
/**
*
* アプリケーションの管理情報いろいろ
* まだとりあえずな状態。
*
* @author kanagawa
*/
public class KsInformation {
public static String dbpath = "./keystone.db";
public static String logpath = ".";
public static String logname = "keystone.log";
private static java.util.logging.Logger logger = null;
public static java.util.logging.Logger getLogger() {
try
{
String wFilePath = logpath + java.io.File.separator + logname;
java.util.logging.FileHandler wHandler = new java.util.logging.FileHandler(wFilePath, true);
wHandler.setFormatter(new java.util.logging.SimpleFormatter());
KsInformation.logger = java.util.logging.Logger.getLogger(logname);
KsInformation.logger.addHandler(wHandler);
KsInformation.logger.setLevel(java.util.logging.Level.ALL);
}
catch(java.lang.Exception e)
{
KsInformation.logger.warning(e.getMessage());
}
return KsInformation.logger;
}
}
// ----------------------------------------------------------------------------------------------------
package com.keystonebrand.squid.lib;
/**
*
* @author kanagawa
*/
public interface KsIblockBack<T> {
public void exec(T aObject);
}
前に戻る