hibernate


hibernate

hibernate博客:https://www.cnblogs.com/whgk/category/910622.html
缓存和快照:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html

sql:http://www.cnblogs.com/whgk/p/6149009.html

sql多表连接 
https://www.cnblogs.com/logon/p/3748020.html
1. A inner join B on
2. 
A [outer] join B on
A left [outer] join B on
A right [outer] join B on
3.A cross join B 效果等同于 from A,B
结果为笛卡尔积


1.对象关系映射
access设置为field,通过属性操作字段,不通过get和set方法
<property name="name" column="NAME" access="field">

2.派生属性 formula或者在对应方法中添加逻辑
<property name="totalPrice" formula="(select sum(s.PRICE) from orders o where t.ID=ID)"/>

3.insert update
property中的insert,update属性
insert              true,insert语句包含此字段,false不包含
dynamic-insert      true,insert语句仅包含不为null的字段

update true,update语句包含此字段,false不包含
dynamic-update      true,update语句仅包含不为null的字段

在学习SQL的过程中,会遇到一个让你迷糊的Schema的概念。实际上,schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。
如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。
我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的shema名。在数据库中一个对象的完整名称为schema.object,而不属user.object。

4.映射一对多关联关系
cascade=“save-update、delete” not-null="true"  保存或更新删除当前对象,级联保存或更新删除关联对象

hibernate操纵对象

1.save(),用来持久化临时对象,游离对象和持久化对象不用此方法,save, 把一个瞬态的实例持久化标识符,及时的产生,它要返回标识符,所以它会立即执行Sql insert
persist() 用来持久化临时对象,不会计划执行insert
Hibernate 之所以提供与save()功能几乎完全类似的persist()方法,一方面是为了照顾JPA的用法习惯。另一方面,save()和 persist()方法还有一个区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值);但使用 persist() 方法来保存持久化对象时,该方法没有任何返回值。因为 save() 方法需要立即返回持久化对象的标识属性,所以程序执行 save() 会立即将持久化对象对应的数据插入数据库;而 persist() 则保证当它在一个事物外部被调用时,并不立即转换成 insert 语句, 这个功能是很有用的,尤其当我们封装一个长会话流程的时候,persist() 方法就显得尤为重要了
Customer customer= new Customer();

session.save(customer);
customer.setName("TOM");
session.save(customer);   ---多余
tx.commit

下边插入两条数据
Session session1 = sessionFactory.openSession();
Transaction tx1 = session1.beginTransaction();
session1.save(customer);
tx1.commit;
session1.close();

Session session2 = sessionFactory.openSession();
Transaction tx2 = session1.beginTransaction();
session2.save(customer);    cusomer id 为
tx2.commit();
session2.close();

 

spring通过aop给业务方法加入事务。

https://www.cnblogs.com/qjjazry/p/6366204.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值