Я генерирую .hbm.xml
файлы сопоставления и .java
файлов из схемы БД с помощью Hibernate Tools. Мой вопрос в том, есть ли какой-либо вариант, также создавать классы обслуживания? Это классы, в которых я реализую методы store(), find(), delete() и т. Д. Я знаю, что для C# существует множество решений для генерации почти всего. Я ищу то же самое, но с Hibernate. Есть ли?Сгенерировать сервисный уровень с Hibernate
ответ
Создание «сервисов» для меня не имеет большого значения, поскольку службы обычно реализуют бизнес-логику (что Hibernate не может магически генерировать).
Теперь, если вы имеете в виду код доступа к данным i.e. DAO (выставляя и реализуя методы и искатели CRUD), то Hibernate Tools может это сделать. Вот код DAO (.java) вариант на захвате Eclipse plugin показано ниже:
alt text http://docs.jboss.org/tools/2.0.0.GA/hibernatetools/en/html/images/codegenexporters.png
Эквивалент Ant Task является hbm2dao
.
Но я лично не использую эту функцию, и я бы пошел duffymo's way.
Невозможно создать службы.
Вы должны иметь возможность написать только один общий интерфейс 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);
}
Spring Roo может иметь то, что вы хотите.
Вы можете реализовать уровень доступа к данным, просто объявив интерфейсы и используя их с помощью прокси JDK, которые затем вызывают методы hibernate. Подробности здесь - A simple data access layer using hibernate.
Я реализовал это, и он хорошо работает и вырос для удовлетворения моих потребностей. Я продлил надстройку(), удалить() и т.д .. методы также incude именованных запросов (findQueryName
) и использование генериков, поэтому все, что мне нужно сделать, чтобы объявить базовый интерфейс для доступа к данным CRUD является
public interface SomeObjectDAO extends GenericDAO<SomeObject> {
}
Cool- где я могу найти реализацию? :) – ianpojman
Вы должны создать это. – duffymo