java hibernate хранит sql запросы в xml файле
Я пытаюсь поместить все SQL-запросы в XML-файл. Я использую Spring boot и hibernate с нативным SQLS
Может кто-нибудь предоставить мне пример, как загрузить и получить строку запроса из XML-файла при весенней загрузке и спящем режиме.
Я использую Java-конфигурацию в приложении.
Файл конфигурации выглядит следующим образом:
@SpringBootApplication
@PropertySources({
@PropertySource(value = "classpath:application.properties")
})
@EnableAutoConfiguration`enter code here`
@Configuration
public class BootApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(BootApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(BootApplication.class, args);
}
@Bean
public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) {
return hemf.getSessionFactory();
}
}
XML-файл находится ниже:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<entry key="getUsersById">
<![CDATA[
Select * From User
Where id =?
]]>
</entry>
<entry key="getPersonBySSN">
<![CDATA[
]]>
</entry>
</properties>
Ниже приведен код спящего режима Java без перемещения файла sql в xml. Мне нужно переместить файл sqls в xml, так как в приложении много запросов.
public List<User> getUsers(String id) {
List<User> users = new ArrayList<User>();
try {
String sql = "Select * From User Where id =?";
SQLQuery query = getSession().createSQLQuery(sql);
query.setParameter(0, id); query.setResultTransformer(Transformers.aliasToBean(User.class))
users = (List<User>) query.list();
} catch (Exception e) {
logger.error("Error", e);
}
return users;
}
Может кто-нибудь, пожалуйста, привести пример, чтобы переместить SQL-запросы в XML-файл и использовать его Java-код?
1 ответ
Почему просто использовать именованный запрос:
<sql-query name="getUsersById">
<return alias="user" class="your class"/>
<![CDATA[ Select * From User
Where id =?]]>
</sql-query>