Hibernate注解式开发:

  (1)注解式开发的注意点:

    Hibernate中使用注解,主要是为了替代映射文件,完成“类到表,属性到字段”的映射。 
    JPA提供了一套功能强大的注解。Hibernate直接使用了JPA的这套注解。当然,对于JPA中的一些不足,Hibernate又开发了一些自己的注解。这些注解要么继承自JPA,要么是独立的注解,作为JPA的补充。 
    故,我们使用的注解,基本是javax.persistence.Transient包中的。 使用注解时需注意以下几点: 
      (1)使用的均为javax.persistence.Transient包中的注解

      (2)不再需要映射文件了

      (3)在Hibernate主配置文件中无需指定映射文件了,但需要指定注解的实体类。

  (2)示例一(基本注解):

 @Entity   //表明当前类为实体类
@Table(name="t_student") //可以省略
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) //表明主键值由数据库自己来维护
private Integer id;
@Basic //表明当前属性将被持久化导数据库中,该注解为属性的默认注解,可以省略
@Column(name="tname")
private String name;
@Basic //表明当前属性将被持久化导数据库中,该注解为属性的默认注解
@Column(name="tage")
private int age;
@Transient //表明当前属性将不写到数据库中
private double score;

   示例二(使用Hibernate内置主键生成策略):

 @Entity
public class Student {
@Id
@GeneratedValue(generator="xxx") //使用自己定义的主键生成器
@GenericGenerator(name="xxx", strategy="native") //生成一个主键生成器,目的是为了使用Hibernate自带的主键生成策略
private Integer id;
private String name;
private int age;
@Transient //表明当前属性将不写到数据库中
private double score;

   示例三(一对多双向关联,并且一方放弃关联关系维护权):

 @Entity
public class Country {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer cid;
private String cname; //mappedBy="country" 表示一方放弃维护权,并将维护权交给了对方的关联属性country
@OneToMany(targetEntity=Minister.class, cascade=CascadeType.ALL, mappedBy="country") //targetEntity可以省略
//一旦一方放弃了维护权,则@JoinColumn注解将不能使用
//@JoinColumn(name="countryId")
private Set<Minister> ministers;
 @Entity
public class Minister {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer mid;
private String mname; @ManyToOne(targetEntity=Country.class, cascade=CascadeType.ALL) //注意:这里只能使用ALL,因为注解是JPA的注解,如果不用ALL,就对Hibernate的代码不起作用
@JoinColumn(name="countryId")
private Country country; //关联属性

   示例四(自关联):

 @Entity
//新闻栏目
public class NewsLabel {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String name; //栏目名称
private String content; //栏目内容 @ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="pid")
private NewsLabel parentNewsLabel; //父栏目 @OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="pid")
private Set<NewsLabel> childNewsLabels; //子栏目

   示例五(多对多双向关联,代码更简单,无需指定中间表,因为底层实现了很多):

 @Entity
public class Course {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer cid;
private String cname; //多对多双向关联的注解,要求有一方要放弃维护权。否则,将要生成两张中间表,当然只有一张中间表起作用
@ManyToMany(cascade=CascadeType.ALL, mappedBy="courses")
private Set<Student> students;
 @Entity
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer sid;
private String sname; @ManyToMany(cascade=CascadeType.ALL)
private Set<Course> courses;

   示例六(二级缓存,Query缓存不能使用注解):

 @Entity
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
public class Country {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer cid;
private String cname; @OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="countryId")
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
private Set<Minister> ministers;
 @Entity
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
public class Minister {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer mid;
private String mname; @ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="countryId")
private Country country; //关联属性

Hibernate5笔记9--Hibernate注解式开发的更多相关文章

  1. SpringMVC笔记:annotation注解式开发

    一.配置式开发 在我们之前的学习中,springmvc使用配置式开发模式,需要在核心配置文件中springmvc.xml注册大量的bean来注入controller控制器,工作繁琐容易出错,下面我们学 ...

  2. 【转】Eclipse中设置ButterKnife进行注解式开发步骤 -- 不错

    原文网址:http://www.bubuko.com/infodetail-974262.html 最近在进行Android注解式开发的学习,正在尝试用ButterKnife.ButterKnife的 ...

  3. 总结切面编程AOP的注解式开发和XML式开发

    有段日子没有总结东西了,因为最近确实有点忙,一直在忙于hadoop集群的搭建,磕磕碰碰现在勉强算是能呼吸了,因为这都是在自己的PC上,资源确实有点紧张(搭建过程后期奉上),今天难得大家都有空(哈哈哈~ ...

  4. SpringMVC 注解式开发

    SpringMVC的注解式开发是指,处理器是基于注解的类的开发.对于每一个定义的处理器,无需再配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册.即注解替换是配置文件中对于处理器的注册 ...

  5. Spring MVC注解式开发

    MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...

  6. 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值

    上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...

  7. 《SpringMVC从入门到放肆》九、SpringMVC注解式开发(简单参数接收)

    上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来.今天我们来学习注解开发的参数接收.处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用.具体 ...

  8. 《SpringMVC从入门到放肆》八、SpringMVC注解式开发(基本配置)

    上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发.所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式.对 ...

  9. 3.2.3 SpringMVC注解式开发

    SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @ ...

随机推荐

  1. Opera官网打不开 下载Opera最新版本的实际地址

    目前Opera官网可以打开,但是点下载时就会出错,国内无法访问Opera的下载地址,无法通过官网直接下载Opera浏览器.下面提供下载的方式. 一.通过官方的ftp站点下载 FTP地址为 http:/ ...

  2. oracle 空表导出dmp会报错

    步骤一.查找出来的语句全部复制并执行 select 'analyze table '||table_name||' compute statistics;' from user_tables; 步骤二 ...

  3. Mybatis笔记六:Mybatis中SqlSessionFactoryBuilder/SqlSessionFactory/SqlSession/映射器实例的作用域(Scope)和生命周期

    SqlSessionFactoryBuilder 这个类可以被实例化.使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了.因此 SqlSessionFactoryBuilder ...

  4. 数据挖掘领域经典分类算法 —— C4.5算法(附python实现代码)

    目录 理论介绍 什么是分类 分类的步骤 什么是决策树 决策树归纳 信息增益 相关理论基础 计算公式 ID3 C4.5 python实现 参考资料 理论介绍 什么是分类 分类属于机器学习中监督学习的一种 ...

  5. 洛谷 P5105 不强制在线的动态快速排序

    P5105 不强制在线的动态快速排序 题目背景 曦月最近学会了快速排序,但是她很快地想到了,如果要动态地排序,那要怎么办呢? 题目描述 为了研究这个问题,曦月提出了一个十分简单的问题 曦月希望维护一个 ...

  6. linux内核分析 第八周 理解进程调度时机跟踪分析进程调度与进程切换的过程

    笔记: 实验:使用gdb跟踪分析一个schedule()函数

  7. Mysql基本的一些查询操作

    /*查询选修课程‘3-105’且成绩在60到80之间的所有记录.*/SELECT * FROM result WHERE CNO='3-105' AND GRADE > 60 AND GRADE ...

  8. python之旅:并发编程之多进程

    一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...

  9. [VS2012] 无法查找或打开 PDB 文件

    http://www.cnblogs.com/southernduck/archive/2012/11/23/2784966.html 用VS2012调试一个控制台程序的时候,出现一下提示信息: “w ...

  10. pg数据库杀掉连接

    遇到异常连接时,需要将对应连接杀掉,可能是连接占用了过多CPU或是IO,影响了业务,或是时间过长的空闲事务. pg对于杀掉连接提供了专门的命令,一般情况下使用pg_cancel_backend就可以, ...