【发布时间】:2013-12-06 14:36:26
【问题描述】:
由于尝试在多线程应用程序中使用 Hibernate 时可能遇到的所有问题(1st clue、2nd clue、3rd clue 等),我正在考虑另一种解决方案:在经典 Controller,然后只需使用 URL.openConnection() 从我的线程中调用它。
换句话说,而不是做这样的事情:
MyThread.java
public class MyThread implements Runnable {
@Override
public void run() {
// do some great stuff with Hibernate
}
}
Anywhere.java
new Thread(new MyThread()).start();
我想尝试这样的事情:
MyController.java
@Controller
public class MyController {
@RequestMapping(value = "myUrl", method = RequestMethod.GET)
public void myMethod() {
// do some great stuff with Hibernate
}
}
MyThread.java
public class MyThread implements Runnable {
@Override
public void run() {
// simple call the above mapped url
}
}
Anywhere.java
new Thread(new MyThread()).start();
你怎么看?是好是坏?我还没有尝试过,但我认为这样的解决方案可以防止我们在多线程中使用 Hibernate 时遇到的常见错误,因为服务器将执行逻辑部分,就好像有人在请求 fake 页面一样。
PS:我知道有一些解决方案可以在多线程应用程序中使用 Hibernate,但每次我尝试一个时,都会出现另一个,直到 我受够了- with-it 不归路。
PS2:我知道需要保护这样的解决方案(例如,将 UID 作为令牌)。
【问题讨论】:
标签: java multithreading hibernate spring-mvc