У меня есть pojo, которое содержит несколько именованных запросов для получения данных.служба весеннего отдыха - hibernate dao - аннотации - pojo - namedqueries
@NamedQueries({
@NamedQuery(name="abc", query="test")
})
@Entity
@Table(name = "MY_TABLE")
public class MyTable implements java.io.Serializable{
private long id;
private String name;
...........
Мне нужно получить результат этого именованного запроса из метода служебного слоя. Итак, я попытался авторизовать фабрику сеансов hibernate в классе уровня обслуживания.
@Service
public class MyServiceClass{
@Autowired
SessionFactory sessionFactory;
..........
public void myMethod() {
Session session = acceSessionFactory.getCurrentSession();
Query query = session.getNamedQuery("abc").setInteger("id", 1).setString("name", "testname");
MyTable mytablerow = (MyTable) query.uniqueResult();
.......
}
Однако в приведенном выше подходе - я думаю, что мы имеем логику уровня dao в слое обслуживания. Является ли это правильным способом доступа к именованным запросам?
Примечание: У меня нет класса или класса DAO для класса MyTable выше.
Как насчет этого комбинированного подхода - иметь GenericDAO - иметь интерфейс IMyTableDAO, который реализует GenericDAO - но не имеет MyTableDAOImpl. – user811433
@ user811433 Посмотрите на 'spring-data-jpa', именно поэтому вы описываете. – Kartoch
Вам понадобится MyTableDAOImpl. NamedQuery («abc») обычно специфичен для вашей сущности или какого-то базового объекта. Он не будет рецензироваться из GenericDAOImpl –