Hibernate—— 注解

Hibernate—— 注解_第1张图片

类级别注解

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关联映射注解之 多对多双向 外键关联

其他的地方跟第8点一样

你可能感兴趣的:(Hibernate—— 注解)