Генерировать сервисный слой с помощью гибернации
-
26-09-2019 - |
Вопрос
Я генерирую .hbm.xml
картографические файлы и .java
Файлы из схемы БД с инструментами Hibernate. Мой вопрос в том, что есть ли какой-нибудь вариант, чтобы генерировать классы обслуживания? Это классы, где я реализую магазин (), найти (), удалить (), и т. Д. ... Я знаю, что для C # есть много решений для генерации почти все. Я ищу то же самое, но с гибернатом. Есть ли?
Решение
Генерация «Услуги» не имеет большого смысла для меня как услуги, как правило, реализуют бизнес-логику (что гибернат не может волшебным образом генерировать).
Теперь, если то, что вы имеете в виду, это код доступа к данным, т. Е. DAOS (разоблачение и реализация методов CRUD и Finders), то Hibernate Tools. могу сделать это. Это DAO код (.java) вариант на захвате Плагин Eclipse показано ниже:
Эквивалент Задача муравей является hbm2dao
.
Но я лично не использую эту функцию, и я бы пошел Пуффоймо.
Другие советы
Нет возможности генерировать услуги.
Вы должны иметь возможность написать только один универсальный интерфейс DAO и реализацию с помощью Hibernate.
Так:
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);
}
Весенний роума может иметь то, что вы хотите.
Вы можете реализовать уровень доступа к данным, просто объявляя интерфейсы, и их реализован с использованием прокси JDK, которые затем вызовут методы Hibernate. Детали здесь - Простой слой доступа к данным с помощью Hibernate.
Я реализовал это, и это хорошо работает и выросло, чтобы удовлетворить мои потребности. Я расширил Add (), удалите () и т. Д .. Методы, чтобы также инкусировать именованные запросы (findQueryName
) и использование дженериков, поэтому все, что мне нужно сделать, чтобы объявить базовый интерфейс доступа к данным CRUD
public interface SomeObjectDAO extends GenericDAO<SomeObject> {
}