Hibernate 配置详解(10)
2013-08-28 11:54
232 查看
hibernate.use_identifier_rollback
这是一个很简单的属性,该属性能够设置值为true|false,默认为false。当设置为true的时候,在删除一个Entity的时候,这个Entity的主键值会自动设置回初始状态。下面来看一个很简单的例子:
先保存一个对象,然后删除他,在默认情况下,控制台输出:1L,因为这个时候Department对象被删除了,但是id还是以前的ID值,所以,在session.close()之后,d应该是临时对象,但是id却有值,这在有些时候是有点烦躁的时候。那么我只需要设置:
再次运行测试,控制台输出:null,Department对象被删除了,其主键也回退到了最初的状态null,那么这种情况下就可以完全根据对象是否有id值来判断其状态了(在同一线程内)。
hibernate.use_sql_comments
这也是很简单的一个属性,可选值为true|false,默认为false,当设置为true后,hibernate在控制台打印SQL的时候,会为生成的SQL添加注释,可以简单来看看如果这个属性设置为true之后,hibernate会怎么输出?
可以看到,hibernate会在执行CRUD等操作的时候为生成的SQL或者查询的HQL添加注释,但是还是很可惜的是,我们仍然没法看到生成SQL的参数,所以这个设置其实意义不大。
要看到hibernate输出SQL的值,个人觉得最好的方法是:
http://blog.csdn.net/stefwu/article/details/10432449
这是一个很简单的属性,该属性能够设置值为true|false,默认为false。当设置为true的时候,在删除一个Entity的时候,这个Entity的主键值会自动设置回初始状态。下面来看一个很简单的例子:
@Before public void testSave() { Session session = HibernateUtil.getInstance().getSession(); session.beginTransaction(); Department d = new Department(); d.setName("de"); session.save(d); session.getTransaction().commit(); session.close(); } @Test public void testDelete(){ Session session = HibernateUtil.getInstance().getSession(); session.beginTransaction(); Department d=(Department)session.get(Department.class, 1L); session.delete(d); session.getTransaction().commit(); session.close(); System.out.println(d.getId()); }
先保存一个对象,然后删除他,在默认情况下,控制台输出:1L,因为这个时候Department对象被删除了,但是id还是以前的ID值,所以,在session.close()之后,d应该是临时对象,但是id却有值,这在有些时候是有点烦躁的时候。那么我只需要设置:
hibernate.use_identifier_rollback true
再次运行测试,控制台输出:null,Department对象被删除了,其主键也回退到了最初的状态null,那么这种情况下就可以完全根据对象是否有id值来判断其状态了(在同一线程内)。
hibernate.use_sql_comments
这也是很简单的一个属性,可选值为true|false,默认为false,当设置为true后,hibernate在控制台打印SQL的时候,会为生成的SQL添加注释,可以简单来看看如果这个属性设置为true之后,hibernate会怎么输出?
692 [main] DEBUG org.hibernate.SQL - /* insert cd.itcast.hibernate.day2.many2one.Department */ insert into Department (name) values (?) 712 [main] DEBUG org.hibernate.SQL - /* insert cd.itcast.hibernate.day2.many2one.Department */ insert into Department (name) values (?) 712 [main] DEBUG org.hibernate.SQL - /* insert cd.itcast.hibernate.day2.many2one.Department */ insert into Department (name) values (?) 782 [main] DEBUG org.hibernate.SQL - /* load cd.itcast.hibernate.day2.many2one.Department */ select department0_.id as id1_0_0_, department0_.name as name2_0_0_ from Department department0_ where department0_.id=? 964 [main] DEBUG org.hibernate.SQL - /* FROM Department */ select department0_.id as id1_0_, department0_.name as name2_0_ from Department department0_ 974 [main] DEBUG org.hibernate.SQL - /* load one-to-many cd.itcast.hibernate.day2.many2one.Department.emps */ select emps0_.DEPT_ID as DEPT2_0_1_, emps0_.id as id1_1_1_, emps0_.id as id1_1_0_, emps0_.DEPT_ID as DEPT2_1_0_ from Employee emps0_ where emps0_.DEPT_ID=?
可以看到,hibernate会在执行CRUD等操作的时候为生成的SQL或者查询的HQL添加注释,但是还是很可惜的是,我们仍然没法看到生成SQL的参数,所以这个设置其实意义不大。
要看到hibernate输出SQL的值,个人觉得最好的方法是:
http://blog.csdn.net/stefwu/article/details/10432449
相关文章推荐
- hibernate映射配置文件详解
- Hibernate 配置详解(12) 补充
- JAVA框架之Hibernate【配置文件详解】
- Hibernate配置文件详解
- spring与hibernate配置jar包功能详解
- Hibernate配置文件详解
- 经典hibernate配置详解
- SSH:Hibernate框架(七种关联关系映射及配置详解)
- Hibernate配置文件详解
- Hibernate学习笔记----hbm.xml配置详解
- MyEclipse 10 配置jad反编译工具步骤及详解
- Hibernate + jbosstools 整合、配置、测试详解
- Hibernate配置文件详解
- Hibernate配置文件详解
- 【Hibernate】Hibernate系列3之配置文件详解
- Hibernate各种主键生成策略与配置详解
- Hibernate 配置详解(4)
- Hibernate各种主键生成策略与配置详解
- hibernate 配置详解
- Hibernate二级缓存 的配置详解(ssh)