使用hibernate 动态更新能一定程度的优化我们的数据库,但是有时需在加载对象后对部分属性处理后传递给页面的时,在事务提交时会自动update 到数据库。下面就来分析动态更新何时生效:
Configuration cf = new Configuration().configure();
SessionFactory sf =cf.buildSessionFactory();
Session session = sf.openSession();
Transaction transaction = session.beginTransa...
阅读全文>>
get和load方式是根据id取得一个记录
下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。
1.从返回结果上对比:
load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常
get方法检索不到的话会返回null
2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂首先查找session的persistent Context中是否有缓存,如果有则直接返回 如果没有则判断是否是lazy,如果不...
阅读全文>>
generated 用于有数据库默认值的获取方式设置。枚举类型有‘never’,‘insert’,‘always’ 三个可选值,默认never。
never(默认):标明此属性值不是从数据库中生成, 也就是根本不用刷新实体类了。
insert:标明此属性值在insert的时候生成,但是不会在随后的update时重新生成。也就是只在insert情况下才会刷新实体类。
alway...
阅读全文>>
在数据库设计中,我们常碰到一些表,它们管理自身。例如栏目,有子栏目,通常表中有个关联父级栏目的字段。在hibernate 配置中我们通常可以当作关联的不同表来处理。
阅读全文>>
当你显式的使用session.save()或者session.update()操作一个对象的时候,实际上是用不到unsaved-
value 的。某些情况下(父子表关联保存),当你在程序中并没有显式的使用save或者update一个持久对象,那么Hibernate需要判断被
操作的对象究竟是一个已经持久化过的持久对象,是一个尚未被持久化过的内存临时对象。例如:
Session session = ...;
Transaction tx = ...; &nbs...
阅读全文>>
Hibernate 作为java 界最流行的框架之一。很多初学者争着要学习它,设计者也将其设计的程序中使用了hibernate 为豪。而更多的人只是停留在使用它的层面上,当然这是正常,但我认为虽然不需要从头到尾去读起源代码,和掌握其设计思想,最少应该了解其优缺点,自己不读源码,就只能靠读过的人给出了。下面是我了解到的一些hibernate 特点,有从同行处了解到的,也有自己读源码及使用过程积累到的,仅供大家参考。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取...
阅读全文>>