2010-06-12 3 views
1

Я генерирую .hbm.xml файлы сопоставления и .java файлов из схемы БД с помощью Hibernate Tools. Мой вопрос в том, есть ли какой-либо вариант, также создавать классы обслуживания? Это классы, в которых я реализую методы store(), find(), delete() и т. Д. Я знаю, что для C# существует множество решений для генерации почти всего. Я ищу то же самое, но с Hibernate. Есть ли?Сгенерировать сервисный уровень с Hibernate

ответ

1

Создание «сервисов» для меня не имеет большого значения, поскольку службы обычно реализуют бизнес-логику (что 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.

2

Невозможно создать службы.

Вы должны иметь возможность написать только один общий интерфейс 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); 
} 
+0

Cool- где я могу найти реализацию? :) – ianpojman

+0

Вы должны создать это. – duffymo

0

Вы можете реализовать уровень доступа к данным, просто объявив интерфейсы и используя их с помощью прокси JDK, которые затем вызывают методы hibernate. Подробности здесь - A simple data access layer using hibernate.

Я реализовал это, и он хорошо работает и вырос для удовлетворения моих потребностей. Я продлил надстройку(), удалить() и т.д .. методы также incude именованных запросов (findQueryName) и использование генериков, поэтому все, что мне нужно сделать, чтобы объявить базовый интерфейс для доступа к данным CRUD является

public interface SomeObjectDAO extends GenericDAO<SomeObject> { 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^