Hibernate 配置详解(10)
来源:互联网 发布:室内设计书籍 知乎 编辑:程序博客网 时间:2024/05/20 16:43
hibernate.use_identifier_rollback
这是一个很简单的属性,该属性能够设置值为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 配置详解(10)
- hibernate+spring配置详解
- Hibernate配置详解
- hibernate的配置详解
- hibernate+spring 配置详解
- 《转》hibernate配置详解
- Hibernate配置属性详解
- Hibernate配置属性详解
- hibernate 配置参数详解
- hibernate配置C3P0详解
- Hibernate 配置详解(1)
- Hibernate 配置详解(3)
- Hibernate 配置详解(2)
- Hibernate 配置详解(4)
- Hibernate 配置详解(5)
- Hibernate 配置详解(6)
- Hibernate 配置详解(7)
- Hibernate 配置详解(8)
- 输入法框架
- HTML5学习3
- 序列化和拷贝
- CVS 服务器端的配置
- A - Marbles
- Hibernate 配置详解(10)
- .Net MVC4 被坑心得(七)filter 身份验证
- solr 4.4 Error filterStart 问题
- SharePoint 2013 显示用户Lync是否在线(集成Lync)
- 对比iOS网络类库:AFNetworking VS ASIHTTPRequest
- 你应该更新的Java知识之常用程序库(一)
- 低预算选购中高配车 海马M3 1.5L一个不错的选择
- MySQL 触发器简单实例
- H.264帧内编码的模式选择