ORMLite Data Access Object(DAO)

Previous time, I wrote about ORMLite to create Table without schema. Next is DAO.

DAO is Data Access Object to manage(CRUD, create read, update, delete).

Before starting, Entity is changed a bit.

Entitiy

Added getter and setter to access

@DatabaseTable(tableName = "setting" )
public class Setting 
{
	@DatabaseField(generatedId=true)	// For Autoincrement
	private Integer id;
	
	@DatabaseField
	private String key;
	
	@DatabaseField
	private Integer value;

	public Integer getId() 
	{
		return id;
	}

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

	public String getKey() 
	{
		return key;
	}

	public void setKey(String key) 
	{
		this.key = key;
	}

	public Integer getValue() 
	{
		return value;
	}

	public void setValue(Integer value) 
	{
		this.value = value;
	}
}

DAO

Data Access Object(Example)

public class SettingDAO 
{
	public void createSetting( ConnectionSource cs,
								String key,
								Integer value ) throws SQLException
	{
		Dao<Setting,Integer> dao = DaoManager.createDao(cs, Setting.class);
		
		Setting setting = new Setting();
		setting.setKey(key);
		setting.setValue(value);
		dao.create(setting);
	}
	
	public Setting findById( ConnectionSource cs, Integer id ) throws SQLException
	{
		Dao<Setting,Integer> dao = DaoManager.createDao(cs, Setting.class);
		return dao.queryForId(id);
	}
	
	public Setting findByKey( ConnectionSource cs, String key ) throws SQLException
	{
		Setting ret_val = null;
		Dao<Setting,Integer> dao = DaoManager.createDao(cs, Setting.class);
		for ( Setting tmp : dao.queryForEq("key", key) )
		{
			ret_val = tmp;
		}
		return ret_val;
	}
	
	public List<Setting> getAll ( ConnectionSource cs ) throws SQLException
	{
		Dao<Setting,Integer> dao = DaoManager.createDao(cs, Setting.class);
		return dao.queryForAll();
	}
	
	public void update ( ConnectionSource cs, Integer id, Integer value ) throws SQLException
	{
		Setting setting = findById(cs, id);
		
		if ( setting != null )
		{
			Dao<Setting,Integer> dao = DaoManager.createDao(cs, Setting.class);
			setting.setValue(value);
			dao.update(setting);
		}
	}
}

All operations are required to use

Dao<Setting,Integer> dao = DaoManager.createDao(cs, Setting.class);

There are implementation of creating, updating, finding.

Frame

Called from Activity class.

ORMDatabaseHelper dbhelper = new ORMDatabaseHelper(this);
ConnectionSource connectionSource = new AndroidConnectionSource(dbhelper);
		
try
{
	// Operation using DAO
}
finally
{
        if ( connectionSource != null )
	{
		try
		{
			connectionSource.close();
	        }
		catch ( SQLException oops )
	        {
           		oops.printStackTrace();
		}
	}
}

Create helper and do operations. After getting connection source, you can call DAO.
If you don’t need operations, connection source should be closed. That’s all.