小编Ang*_*gga的帖子

如何使HQL生成SQL以在一个语句中插入多个值?

我需要hibernate来生成这样的sql INSERT INTO table_a (a_id, a_name) VALUES (5, 'a5'),(6, 'a6');.

使用类似的sql,你可以添加2行1语句.我可以得到

a_id, a_name

------------------
5     a5
6     a6
Run Code Online (Sandbox Code Playgroud)

在hibernate中,当你保存一对多关系的集合时,hibernate会插入多个insert语句.这将导致如果您使用HQL将1000行插入1个表将导致如下所示:

INSERT INTO scoring.table_a (`a_id`, `a_name`) VALUES (1, 'a');
INSERT INTO scoring.table_a (`a_id`, `a_name`) VALUES (2, 'a');
....
...
..
INSERT INTO scoring.table_a (`a_id`, `a_name`) VALUES (1000, 'a');
Run Code Online (Sandbox Code Playgroud)

经过的时间是:

Executed 1,000 queries; elapsed time (seconds) - Total: 0.78, SQL query: 0.78, Building output: 0
Run Code Online (Sandbox Code Playgroud)

当我使用相同的值进行测试时,使用SQL INSERT INTO table_a (a_id, a_name) VALUES (5, 'a'),(6, 'a'),(),...,...,(1000, 'a');将导致如下所示的经过时间:

Query …
Run Code Online (Sandbox Code Playgroud)

mysql optimization performance hibernate hql

6
推荐指数
1
解决办法
2935
查看次数

如何避免谷歌搜索将 selenium webdriver 检测为异常行为?

我尝试使用selenium webdriver在 google 中按图像进行一次搜索,因此我的用户不需要手动打开浏览器并将图像 url 粘贴到那里。但谷歌说

我们的系统检测到来自您的计算机网络的异常流量。此页面会检查是否真的是您发送请求,而不是机器人。

并提供验证码,有没有办法避免使用 selenium webdriver 被谷歌检测为自动化

这是我的代码:

@Before
public void setUp() throws Exception {
    driver = new FirefoxDriver();
    baseUrl = "http://images.google.com/searchbyimage?image_url=";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void test2() throws Exception {
    driver.get(baseUrl + "http://somesite.com/somepicture.jpg");
    driver.findElement(By.linkText("sometext"));

    System.out.println("finish");

}

@After
public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}
Run Code Online (Sandbox Code Playgroud)

java selenium captcha selenium-firefoxdriver selenium-webdriver

6
推荐指数
1
解决办法
9700
查看次数