hibernate 注解

当为@xxxToOne时:@JoinColumn(name="addressID") //注释本表中指向另一张表的  (本表中的外键)外键。    
在person中:
@OneToMany(cascade=CascadeType.ALL)  
@JoinColumn(name="personID")//注释的是另一个表指向本表的外键。  
public List<Phone> getPhones() {
        return phones;     
 } 


person中:
@OneToMany(cascade=CascadeType.ALL)  
@JoinColumn(name="personID")//注释的是另一个表指向本表的外键。  
public List<Phone> getPhones() {
        return phones;     
 }
在这里@JoinColumn这个注释指的却是在Phone里面的外键的列的名字,如果你不加 @JoinColumn(name="personID")这个注释的话,那么JBOSS就会自动帮你生成一张中间表


而person注解如下:
@ManyToOne  
@JoinColumn(name="countryID")      
public Country getCountry() {
          return country;      

在这里如果我们去掉@JoinColumn的话,那么一样会在Person表里面生成一列指向
Country的外键,这一点和一对多的单向是不一样
总结: 
在@ManyToOne中,即便不添加:@JoinColumn(name="countryID"),任然会在该类对应的表中添加一个指向country的外键
而在@OneToMany中,不添加@JoinColumn(name="personID"),是不会自动在其对应的类中添加外键的,


3.多对多中,joinColumns写的都是本表在中间表的外键名称,
  inverseJoinColumns写的是另一个表在中间表的外键名称。


mappedBy: 
1>只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性; 
2>mappedBy标签一定是定义在拥有方类上被拥有方字段上的,并指向拥有方; 
3>mappedBy的含义,应该理解为,拥有方能够自动维护跟被拥有方的关系,当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的; 
4>mappedBy跟joinColumn/JoinTable总是位于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。
  mappedBy这方定义JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表。 


orm 与jpa:http://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html#sec-3-1


在属性上标注 @Temporal(TemporalType.TIMESTAMP) 会得到形如'HH:MM:SS' 格式的日期


方法上标注@PrePersist,@PostPersist等声明即可在事件发生时触发这些方法


mappedBy="roles":appedBy 属性定义了roles为双向关系的维护端 


@Transient表示该属性并非一个到数据库表的字段的映射


FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载
FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载


CascadeType.MERGE级联更新:若items属性修改了那么order对象保存时同时修改items里的对象。对应EntityManager的merge方法 
  
   CascadeType.PERSIST级联刷新:获取order对象里也同时也重新获取最新的items时的对象


Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可。
对应EntityManager的refresh(object)方法有效。即会重新查询数据库里的最新数据   
   
  CascadeType.REFRESH级联保存:对order对象保存时也对items里的对象也会保存。对应EntityManager的presist方法   
   
  CascadeType.REMOVE级联删除:对order对象删除也对items里的对象也会删除。对应EntityManager的remove方法   
CascadeType.PERSIST只有A类新增时,会级联B对象新增。若B对象在数据库存(跟新)在则抛异常(让B变为持久态)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值