Hibernate访问实体类

1 Java应用程序不能访问private类型的getXXX()、setXXX(),而Hibernate则没有这个限制。

2 如果持久化类的属性是基本数据类型,则无法接收null值。

3 <property>的access属性用于指定Hibernate访问持久化类的属性的方式。
property(默认)表示通过getXXX()和setXXX()访问属性。
field表示通过反射机制访问属性。

4 派生属性:利用<property>的formula属性,设置一个SQL表达式。
<proper name="totalPrice"
    formula="(select sum(o.PRICE) from ORDERS o where o.CUSTOMER_ID=ID)" />
<=>
select ID,NAME,SEX,
    (select sum(o.PRICE) from ORDERS o where o.CUSTOMER_ID=1) from CUSTOMERS;

5 Hibernate在初始化阶段,会根据映射文件的配置信息为所有持久化类预定义SQL语句。
insert语句
insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(?,?,?,?)
update语句
update ORDERS set ORDER_NUMBER=?,PRICE=?,CUSTOMER_ID=? where ID=?
delete语句
delete from ORDERS where ID=?
通过OID加载实体类
select ID,ORDER_NUMBER,PRICE,CUSTOMER_ID from ORDERS where ID=?
预定义SQL存放在SessionFactory的内置缓存中,当执行Session的save()、update()、delete()、load()、get()方法时,将从缓存中找到相应的预定义SQL,再把具体的值绑定到该SQL中。
HQL或QBC查询对应的select语句在执行时才动态生成。

猜你喜欢

转载自csolar.iteye.com/blog/2153001
今日推荐