小编Arg*_*aki的帖子

如果没有明确设置,hibernate使用的默认隔离级别是什么?

我有一个使用hibernate版本3.6.4和c3p0版本0.9.1.2的应用程序用于连接池.我的底层RDBMS是MySql版本5.0.67.

我的MySql安装表明默认事务隔离级别为"REPEATABLE-READ"(4):

mysql> select @@GLOBAL.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+
| @@GLOBAL.tx_isolation | @@tx_isolation  |
+-----------------------+-----------------+
| REPEATABLE-READ       | REPEATABLE-READ |
+-----------------------+-----------------+
Run Code Online (Sandbox Code Playgroud)

我没有在hibernate.cfg.xml或我的应用程序中的任何地方更改或配置事务隔离级别.从应用程序,我使用以下代码来打印配置:

DatabaseMetaData meta = getSession().connection().getMetaData();
System.out.println("Default Tx Isolation: " + meta.getDefaultTransactionIsolation());
System.out.println("Current Tx Isolation: " + getSession().connection().getTransactionIsolation());
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

Default Tx Isolation: 2 (=READ_COMMITTED)
Current Tx Isolation: 4 (=REPEATABLE_READ)
Run Code Online (Sandbox Code Playgroud)

所以,我的问题如下:

  1. "2"值来自何处?由于默认值是REPEATABLE_READ,为什么getDefaultTransactionIsolation()返回READ_COMMITTED?
  2. 毕竟,hibernate使用的隔离级别是多少?REPEATABLE_READ还是READ_COMMITTED?
  3. 我认为当没有设置隔离级别时,hibernate应该使用底层数据库的默认值.这是真的?也许jbdc驱动程序实现自己设置一个默认值,而hibernate使用它?

hibernate transaction-isolation isolation-level

25
推荐指数
1
解决办法
3万
查看次数

多语言网站的默认语言是否应该是URL的一部分?

我已经建立了一个多语言网站,其默认语言是英语,并且有多种语言翻译.我们选择了子目录URL策略,以便我们的URL类似example.com/en,example.com/fr等等.是否应该从这些URL中省略默认语言?而不是

  • example.com/en
  • example.com/fr
  • example.com/de

我们可以使用

  • example.com (默认网站语言,本例中为EN)
  • example.com/fr
  • example.com/de

在SEO,UX,最佳实践方面哪个更好?

PS我看过这个这个,但重点是URL的翻译是否是最佳的给予,他们不真正解决我的问题.仅供参考,在我的情况下,要么保留英文字样(example.com/en/about,example.com/fr/about),要么在不可能的情况下,URL会被音译.

url usability multilingual url-design

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

从文件中读取UTF-16字符并将其存储为UTF-8

我有一个Person pojo,有一个name属性,我将其存储在我的数据库中的各个person表中.我的db服务器是MySQL,utf-8设置为默认服务器编码,persons表是InnoDB表,也是用utf-8作为默认编码创建的,我的db连接字符串指定utf-8作为连接编码.

我需要创建和存储新的Person pojos,通过从每行包含名称的txt文件(persons.txt)中读取它们的名称,但文件编码是UTF-16.

persons.txt

约翰

Μαρία

埃莱娜

等等..

这是一个示例代码:

PersonDao dao = new PersonDao();
File file = new File("persons.txt");
BufferedReader reader = new BufferedReader(
                        new InputStreamReader(new FileInputStream(file), "UTF-16"));
String line = reader.readLine();
while (line!=null) {
    Person p = new Person();
    p.setName(line.trim());
    dao.save(p);
    line = reader.readLine();
}
Run Code Online (Sandbox Code Playgroud)

总而言之,我正在读取字符串字符为utf-16,将它们存储在局部变量中并将它们保存为utf-8.

我想问一下:在此过程中是否会发生任何字符转换?如果是,那么这会发生在什么时候?由于utf-16 - > utf-8工作流程,我是否有可能最终存储损坏的字符?

java file utf-8

5
推荐指数
1
解决办法
1万
查看次数