| /******************************************************************************* |
| * Copyright (c) 2013-2020 LAAS-CNRS (www.laas.fr) |
| * 7 Colonel Roche 31077 Toulouse - France |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * Initial Contributors: |
| * Thierry Monteil : Project manager, technical co-manager |
| * Mahdi Ben Alaya : Technical co-manager |
| * Samir Medjiah : Technical co-manager |
| * Khalil Drira : Strategy expert |
| * Guillaume Garzone : Developer |
| * François Aïssaoui : Developer |
| * |
| * New contributors : |
| *******************************************************************************/ |
| package org.eclipse.om2m.persistence.service; |
| |
| /** |
| * Generic DAO |
| * |
| * The DAO (Data Object Access) Pattern is used to make separation between data |
| * access layer and the business layer of an application. It allows better |
| * control of changes that might be made on the system of data storage and |
| * therefore to prepare a migration from one system to another (DB to XML files |
| * for example). This is done by separating data access (BDD) and business |
| * objects (POJOs). |
| * |
| * @param <T> |
| * Type of the resource |
| */ |
| public interface DAO<T> { |
| /** Create a resource using the database transaction */ |
| public abstract void create(DBTransaction dbTransaction, T resource); |
| |
| /** Load an object from the database using the transaction */ |
| public abstract T find(DBTransaction dbTransaction, Object id); |
| |
| /** Update an object in the database using the transaction */ |
| public abstract void update(DBTransaction dbTransaction, T resource); |
| |
| /** Delete an object in the database */ |
| public abstract void delete(DBTransaction dbTransaction, T resource); |
| |
| } |