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语句在执行时才动态生成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值