关于hibernate

hibernate 的load和get的区别,load支持懒加载,每次在调用对象的方法的时候才会发送sql语句,发送sql语句的对象实际上是po对象的代理类cglib代理,该代理丰富了po的功能,并且,调用po的getid和getClass 是不会发送sql语句的。load会抛出objectnotfoundexception 因为如果返回的值是null的话,没有办法产生该对象的cglib代理,所以会抛异常。

2.关于hibernate的配置文件,configuration对象创建的时候,根据配置文件的类型,调用会有不同,如果是propertiy文件,则直接new configuration就可以了,如果是xml文件,则必须调用configuration对象的config()方法,产生sessionfactory 是调用configuration的buildsessionfactory() 导表的话调用的是schemeExport 的export()方法,创建schemeExport对象的时候把configuration作为参数传递就可以了

在配置文件中增加show_sql ,format_sql 可以让控制台出现sql语句,并且规范,当然,不同的数据库,使用的sql规范是不同的,所以,有一个方言,dialect

3.在orm映射文件中可以设置的有lazy,dynamic-update 还有insert,update属性,表示是否插入此列,或者更新此列

session通过传递的对象去orm文件中查找对象的类,再找到table属性,再寻找各个列,再寻找各个列上面的属性,再确定是否要插入。或者更新。然后发送sql语句。

4.session的update方法()是改变对象的状态,不发送sql

《美丽心灵》《录取通知书》

猜你喜欢

转载自ning2-eye.iteye.com/blog/1850611