我在Oracle上检测到hibernate和本机查询的性能问题.当我在TOAD上执行带有多个参数的复杂SQL查询时,我得到的结果是毫秒.但是,当我使用Hibernate执行相同的查询时,此时间会大幅增加(最多四秒甚至更多).
我的SQL查询相当复杂,返回一个唯一值(因此,问题与实现类所需的时间无关),它包含几个参数格式为':nameParameter'.此查询存储在String中.例如,
String myNamedNativeQuery = "select count(*) from tables "+
"where column1 = :nameParameter1 "+
"and column2 = :nameParameter2";
//actually my sentence is much more complex!!
Run Code Online (Sandbox Code Playgroud)
当我在TOAD上执行句子时,它会在几毫秒内解决.但是用Hibernate这个句子
SQLQuery query = session.createSQLQuery("myNamedNativeQuery");
query.setParameter(nameParameter1, value1);
query.setParameter(nameParameter2, value2);
query.uniqueResult();
Run Code Online (Sandbox Code Playgroud)
需要几秒钟才能得到相同的结果.
我意识到如果我直接在原生查询中替换参数然后我使用Hibernate执行句子,时间会急剧减少.它会是这样的:
String strQuery = session.getNamedQuery("myNamedNativeQuery").getQueryString();
myNamedNativeQuery = myNamedNativeQuery.replace("nameParameter1", value1);
myNamedNativeQuery = myNamedNativeQuery.replace("nameParameter2", value2);
SQLQuery query = session.createSQLQuery("myNamedNativeQuery");
query.uniqueResult();
Run Code Online (Sandbox Code Playgroud)
谁知道发生了什么?
提前致谢.
PS:Oracle版本是9i和Hibernate 3.2
我知道这个问题已经多次回答,但是当我为IOS 8.1编写Swift应用程序时,我无法找到正确的解决方案:
dyld:未加载库:@ rpath/libswiftCore.dylib引用自:/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName原因:找不到合适的图像.找到:/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib:mmap()错误1在地址= 0x008A1000,大小= 0x001A4000段= __文本在Segment :: map( )mapping /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
正如它在这个问题中说的那样
dyld:未加载库:@ rpath/libswiftCore.dylib
我尝试过所有这些动作:
但我总是得到同样的错误......
我正在使用XCode 6.1和OS X Mavericks 10.9.5,我有一个iPhone 4s用于测试.
今天晚上我在朋友的电脑上部署了我的应用程序,一切都很完美.关键是我朋友的OS X是Yosemite 10.10.所以似乎使用Yosemite问题就消失了.
任何想法都会受到赞赏.谢谢.
PS:由于一些复杂的原因,我无法将我的操作系统更新为Yosemite
我有一个类似于这个的Rest控制器:
@RestController
public class UserRestController {
@Autowired
private UserService userService;
@RequestMapping(value = "/user/activate", method = RequestMethod.POST)
public ResponseEntity<UserDTO> activate(
@RequestParam(required = true) final String email,
@RequestParam(required = true) final String key) {
UserDTO userDTO = userService.activateAccount(email, key);
return new ResponseEntity<UserDTO>(userDTO, HttpStatus.OK);
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用Postman调用它并且我不发送'key'参数时,我收到此JSON消息:
{
"timestamp": 1446211575193,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.bind.MissingServletRequestParameterException",
"message": "Required String parameter 'key' is not present",
"path": "/user/activate"
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我正在使用JUnit和MockMVC Spring实用程序测试此方法.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ApplicationConfig.class)
@WebAppConfiguration
public class UserRestControllerTest {
private static MockMvc mockMvc; …Run Code Online (Sandbox Code Playgroud)