类级别注解
1、使用注解的目的:为了简化繁琐的ORM映射文件(*.hbm)的配置
2、JPA与Hibernate的关系
.什么是JPA?(全称Java Persistence API(java持久化的API接口));JPA注解是JAVAEE的标准和规范
.JPA 是标准接口,Hibernate是实现,但是其功能是JPA的超集。
.Hibernate通过hibernate-annotation,hibernate-entitymanager,hibnernate-core三个组件来实现JPA。
.一般在实际开发中,优先考虑使用JPA注解,这样更有利与程序的移植和扩展。
3、Hibernate注解的分类
类级别的注解,属性级别注解,映射关系注解
类级别的注解.@Entity——表示实体类(一个实体类对应数据库中的一张表)
类级别的注解.@Table
类级别的注解.@Embeddable——表示它是嵌入类
类级别的注解.Schema 和 catalog
4、
5、Hibernate类级别注解之@Entity注解
hibernate 配置文件
实体类1
实体类2
测试类
6、Hibernate类级别注解之@Table注解
一个数据库必然属于一个schema(模式),一个schema必然属于一个catalog(目录),一个模式包含了一个数据库的对象,例如表、视图等
从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别的。
其他的跟 5 一样
7、Hibernate类级别注解之@Embeddable注解
@Embeddable
属性级别注解
1、添加方式
一是写在属性字段上面;二是写在属性的get访问器的上面
2、注解分别有 (加粗的)
@Id、@SequenceGenerator、@GeneratedValue、@Column、@Embedded、@EmbeddedId、@Lob、@Version、@Basic、@Transient
3、Hibernate属性级别注解之@Id注解
设置主键
Ps1:对于复合主键,实体类必须实现serializable接口(声明式接口,不需要实现任何方法)。
Ps2:将 String类型 的属性设置成主键是一定要指定该属性的长度,可以用 Column( length=8) 注解来指定,不然 MySQL 会默认让其长度为255,而 MySQL 主键的长度不允许太长。(即使,Ps1成功实现,但是如果Ps2不通过,即使Junit变为绿条,表也创建不成功)
4、Hibernate属性级别注解之@GeneratedValue注解
主键生成策略
第四点 例子
String类型做主键,@GenericGenerator()
例子
添加一名学生信息
5、Hibernate属性级别注解之@Column注解
6、Hibernate属性级别注解之@Embedded注解
7、Hibernate属性级别注解之@EmbeddedId注解
复合主键
测试类
8、Hibernate属性级别注解之@Transient注解
相当于 设置保密的字段,不映射成表的字段
Hibernate关联映射注解
1、Hibernate关联映射注解之实体之间的关系
2、Hibernate关联映射注解之 一对一 单向 外键关联
pid相当于,被控类的主键
配置类
测试类
3、Hibernate关联映射注解之 一对一双向 外键关联
测试类跟上面一样
4、Hibernate关联映射注解之一对一单向外键联合主键
具体看:7、Hibernate属性级别注解之@EmbeddedId注解
5、Hibernate关联映射注解之多对一单向外键关联
这里的JoinColumn 参数的解释写反了
测试类
6、Hibernate关联映射注解之一对多单向外键关联
注意跟第5点 进行对比
7、Hibernate关联映射注解之一对多双向外键关联
其他的保持不变,测试类一样
8、Hibernate关联映射注解之 多对多 单向外键关联
测试类
9、Hibernate关联映射注解之 多对多双向 外键关联
作者:屌事不扣币
链接:http://www.jianshu.com/p/f1b91943c88c
來源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。