Ответ 1
Вот мой прием:
- JPA: Агностический способ сохранения Java без подключения ваших клиентов к Hibernate, TopLink и т.д.
- Hibernate: Хороший выбор, если у вас есть объектная модель для сопоставления.
- JDBC: на это построена вся настойчивость Java. Самый низкий уровень
- DAO: больше шаблонов, чем технология; CRUD.
- iBatis: на полпути между JDBC (raw SQL) и Hibernate (ORM).
- JDO: объекты данных Java, которые являются еще одной спецификацией для сохранения Java. (например, Apache JDO)
Это не сложное приложение. Он содержит только 5 таблиц (и 5 лица)
Любое из них будет работать, но JDBC будет самым простым. Все остальные построены поверх JDBC.
Я хочу, чтобы мой код был гибким, чтобы я мог впоследствии изменить базу данных легко
Изменения схемы будут иметь схожие эффекты во всех технологиях.
Размер приложения должен оставаться как можно меньше, так как я должны распространять его среди моих клиентов через интернет.
Использование JPA или Hibernate потребует JAR, который добавит размер вашего развертывания. JDBC минимизирует это.
Он должен быть свободен для использования в коммерческой разработке и распространении.
См. лицензии на все технологии. Не должно быть проблем с любым из них.
FYI: возможно написать общий интерфейс DAO:
package persistence;
import java.io.Serializable;
import java.util.List;
public interface GenericDao<T, K extends Serializable>
{
T find(K id);
List<T> find();
List<T> find(T example);
List<T> find(String queryName, String [] paramNames, Object [] bindValues);
K save(T instance);
void update(T instance);
void delete(T instance);
}
Если ваши объекты отображают 1:1 с вашими пятью таблицами, я бы сказал, что JPA - это квадрат переполнения.
Является ли ваше приложение в настоящее время порядка 3 МБ JAR? Если нет, то Hibernate или JPA удваивают размер. Вы можете точно определить, сколько. И там более одного JAR, потому что у них обоих есть зависимости.
YAGNI говорит, что вы должны держать его простым. Это пять столов!
Изменение поставщика, если вы делаете это правильно, означает переключение JAR JDBC-драйвера JAR, изменение имени класса драйвера и добавление нового URL-адреса подключения, который вы должны делать независимо от того, какую технологию вы выбираете.
Я нахожу, что базы данных не меняют это радикально. Вы измените схему, но весь поставщик? Скорее всего, особенно если у вас несколько клиентов. Это будет серьезное неудобство для создания баз данных базового коммутатора.
Какую из них вы планируете отправить? HSQL или что-то, что потребует установки, такой как MySQL? Это более актуальная проблема.