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. window.location.hash 使用

    [转]http://www.cnblogs.com/nifengs/p/5104763.html location是javascript里边管理地址栏的内置对象,比如location.href就管理页 ...

  2. Multi-class Classification相关

    标签(空格分隔): 毕业论文 (OS: 最近在做关于多类分类的综述,但是搜索出来好多方向搞得自己云里雾里的,好吧,又是在下孤陋寡闻了.还是那句话,不知道不可怕,但一直不知道就很尴尬了.) one-cl ...

  3. Spring点滴七:Spring中依赖注入(Dependency Injection:DI)

    Spring机制中主要有两种依赖注入:Constructor-based Dependency Injection(基于构造方法依赖注入) 和 Setter-based Dependency Inje ...

  4. Linux使用vim进行多文件查找和替换的方法

    vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法. 在linu ...

  5. .net 控件开发常见的特性总结

    http://blog.csdn.net/aofengdaxia/article/details/5924364 在.net开发中常常需要使用一些[]里面的特性描述,我发现对常用的几个知道大概的意思, ...

  6. git "refusing to merge unrelated histories" 解决方法

    出现这个错误是因为本地的 git 历史和远程仓库的 git 历史不一样,如果我们想要合并两个不同的 git 历史(我们必须要清楚我们在做什么),就可以使用这个选项来进行强制合并不同的 git 历史,如 ...

  7. matlab绿色版本合集

    网上找的matlab绿色版本合集链接https://pan.baidu.com/s/1gfDyIo7     密码:pxrs

  8. pre-processing预处理

    什么是神经网络?神经网络是由很多神经元组成的,首先我们看一下,什么是神经元1.我们把输入信号看成你在matlab中需要输入的数据,输进去神经网络后2.这些数据的每一个都会被乘个数,即权值w,然后这些东 ...

  9. Selenium--使用参考

    Selenium--浏览器上的按键精灵 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可 ...

  10. linux查看tomcat日志

    声明:以上内容均为转载,个人对这块知识搜罗之后放在一起,非原创,以后这块有问题还会继续添加. Tomcat 日志分为下面5类: catalina . 相当命令行输出日志 localhost . 相当于 ...