JPA注解开发

jpa是sun公司的一个ORM规范,只有接口和注解,没有具体实现。

jpa是EJB3中的。

单表常用注解

书写注解,并配置

@Entity
@Table(name = "c_book")
public class Book {
@Id
//主键策略
// @GeneratedValue(strategy=GenerationType.AUTO)//native
@GenericGenerator(name="wc",strategy="uuid")
@GeneratedValue(generator="wc")//生成uuid
private String id;
@Column(name="cname",length=20,nullable=false,unique=true)

配置Hibernate.cfg.xml

    <!-- 映射配置文件 -->
<mapping class="cn.it.entity.Book"/>

主键相关的:

Auto相当与native,默认值

自定义主键策略(下面使用hibernate的实现):

属性字段官方参考配置:

注解:可以放到属性上面设置,也可以在getter方法上设置,效果一样。

多表常用注解

一对多

新建订单表实体类,并与客户表建立实体关系。

@Entity
@Table(name="w_customer") @NamedQuery(name="Customer.findAll",query="from Customer")
@NamedQueries(value=@NamedQuery(name="Customer.findAll2",query="from Customer"))
public class Customer {
@Id
@GeneratedValue
private Integer id;
private String name;
private String city;
@OneToMany(mappedBy="customer",//by 1 的一方 :在Order实体类中属性customer
cascade=CascadeType.ALL,//级联 不包含 all-delete-orphan
fetch=FetchType.LAZY,//懒加载
orphanRemoval=true,//支持孤儿删除 delete-orphan
targetEntity=cn.it.entity.Order.class//一般忽略 ,Order是接口的化,这里配置实现类的指定
)
private Set<Order> orders = new HashSet<Order>();

--------------------------------------------------------------------------------------------------------------------------------------------

@Entity
@Table(name="w_order")//表名
public class Order {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
private Double price;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="c_id")//自定义关联外键属性 映射表中字段名为c_id 覆盖了默认的customer_id
@Fetch(FetchMode.SELECT)//单表查询
@LazyToOne(LazyToOneOption.PROXY)//代理懒加载
private Customer customer;

核心配置

<mapping class="cn.it.entity.Order"/>
<mapping class="cn.it.entity.Customer"/>

多对多

示例:学生和课程

@Entity
@Table(name="t_course")
public class Course {
//注解主键
@Id
@GenericGenerator(name="wc",strategy="assigned")
@GeneratedValue(generator="wc")//生成随机数
private Integer id;
private String name;
@ManyToMany
@JoinTable(name="t_student_course",//配置中间表
joinColumns=@JoinColumn(name="c_id"),//自定义关系表name
inverseJoinColumns=@JoinColumn(name="s_id")//对方的外键名称
)
private Set<Course> course=new HashSet<Course>();

--------------------------------------------------------------------------------------------------------------------------------------------

@Entity
@Table(name="t_student")
public class Student {
//注解主键
@Id
@GenericGenerator(name="wc",strategy="assigned")
@GeneratedValue(generator="wc")//生成随机数
private Integer id;
private String name;
@ManyToMany
@JoinTable(name="t_student_course",//配置中间表
joinColumns=@JoinColumn(name="s_id"),//自定义关系表name
inverseJoinColumns=@JoinColumn(name="c_id")//对方的外键名称
)
private Set<Course> course=new HashSet<Course>();

核心配置

<mapping class="cn.it.entity.Student"/>
<mapping class="cn.it.entity.Course"/>

命名查询

@NamedQueries(value={
@NamedQuery(name="Customer.findAll",query="from Customer"),
@NamedQuery(name="Customer.findAll2",query="from Customer")
})

测试:

    List<Customer> list = session.getNamedQuery("Customer.findAll").list();
System.out.println(list.get(0).getOrders());

JPA注解开发的更多相关文章

  1. Hibernate注解开发详解

    *****************关于注解的简单介绍 详细介绍请点击这里注解详细教程 package com.tomowork.pojo; import org.hibernate.annotatio ...

  2. Hibernate注解开发、注解创建索引

    1.注解的目的 简化繁琐的ORM映射文件(*.hbm)的配置 2.JPA和hibernate的关系 JPA:java persistence API,JPA注解是JavaEE的标准和规范. 两者的关系 ...

  3. (转) Hibernate注解开发

    http://blog.csdn.net/yerenyuan_pku/article/details/70162268 Hibernate注解开发 在Hibernate中我们一般都会使用注解,这样可以 ...

  4. Hibernate注解开发教程

    目录 第一章 类级别注解 1-1 本章简介 一.Hibernate注解简介 二.JPA与Hibernate的关系 三.Hibernate注解的分类 1-2 准备工作 1-3 @Entity注解 1-4 ...

  5. Spring注解开发系列Ⅵ --- AOP&事务

    注解开发 --- AOP AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,横向重复,纵向抽取.详细的AO ...

  6. SpringMVC注解开发初步

    一.(补充)视图解析器---XmlViewResolver 作用:分离配置信息. 在视图解析器---BeanNameViewResolver的基础之上进行扩充,新建一个myView.xml分离信息 在 ...

  7. SpringMVC的注解开发入门

    1.Spring MVC框架简介 支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换.格式化.验证框架无缝集成 ...

  8. Struts2框架之-注解开发

    Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style=" ...

  9. Java自定义注解开发

    一.背景 最近在自己搞一个项目时,遇到可需要开发自定义注解的需求,对于没有怎么关注这些java新特性的来说,比较尴尬,索性就拿出一些时间,来进行研究下自定义注解开发的步骤以及使用方式.今天在这里记下, ...

随机推荐

  1. Spring security oauth2 password flow

    Spring security oauth2 包含以下两个endpoint来实现Authorization Server: AuthorizationEndpoint: 授权请求访问端点, 默认url ...

  2. [转帖]8个最佳Docker容器监控工具,收藏了

    8个最佳Docker容器监控工具,收藏了 https://www.sohu.com/a/341156793_100159565?spm=smpc.author.fd-d.9.1574127778732 ...

  3. 单选 textarea 赋初值

    自闭合标签赋初值用$().val(),比如:<input type="text" name="text" value="123"> ...

  4. 玩机之Honor_V10

    作为一个热爱手机的Geek,自然是经历了很多的刷机和改装手机的经验,当然翻车的经验也是有的.一般来说的折腾手机都是在遇到某一版本使用以及各方面都比较稳定的时候才会选择让手机停留在哪一版本.下面我就来分 ...

  5. Jenkins版本迭代以及回滚

    一.摘要 在上一篇文章,链接如下: https://www.cnblogs.com/xiao987334176/p/11434849.html 镜像打的是latest版,如果需要回滚的话,就比较麻烦了 ...

  6. 关于ElasticSearch的堆内存设置与优化

    1.什么是堆内存?Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象.在 Java 中,堆被划分成两个不同的区域:- 新生代 ( Young ).- 老年代 ( Ol ...

  7. java之mybatis整合spring

    这篇讲解spring+mybatis的整合. 目录结构: 一. 整合spring的第一种方法 1. 新建 java 项目 : spring_mybatis 2.导入jar 包-----spring和m ...

  8. 表单提交学习笔记(三)—利用Request.Files上传图片并预览

    一.html页面如下 <div id="container"> <form id="myForm"> <p class=" ...

  9. 网页调用文件另存为js

    查看引用是否正常,页面添加html代码. <a id="downLoad" onclick="oDownLoad('downLoad')">下载&l ...

  10. 2019 字节跳动java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.字节跳动等公司offer,岗位是Java后端开发,因为发展原因最终选择去了字节跳动,入职一年时间了,也成为了面 ...