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. 手撕面试官系列(五):Tomcat+Mysql+设计模式面试专题

    Tomcat (面试题+答案领取方式见侧边栏) Tomcat 的缺省端口是多少,怎么修改? tomcat 有哪几种 Connector 运行模式(优化)? Tomcat 有几种部署方式? tomcat ...

  2. [NOIP2016]天天爱跑步-题解

    题面传送门 解答 设第\(j\)号玩家在\(V_j\)时刻出发. 弱化问题:如果树退化成了一条链.则在\(j\)处的观察员能观察到的\(i\)号玩家当且仅当 \[ i玩家经过j,且 \begin{ca ...

  3. Html 对象的常用事件列举

    事件名称 触发时间 对象例举 OnBlur 对象失去输入焦点 窗口和所有的表单对象 OnChange 用户改变对象的值 文本框.文本区域.选择列表等 OnClick 用户鼠标点击 链接.按钮.单选钮. ...

  4. Django使用distinct报错:DISTINCT ON fields is not supported by this database backend

    具体错误提示是:django.db.utils.NotSupportedError: DISTINCT ON fields is not supported by this database back ...

  5. Unity - 简单实现音频管理系统

    简单实现Unity音频管理脚本,便于长短音频的播放控制和音量控制等,核心方法为对象池的应用. 项目地址:AudioPlay - SouthBegonia 包含方法: 持有所有 AudioSource ...

  6. linux服务器同时运行两个或多个tomcat

    第一步:条件:配置好jdk,如果没有配置好请看:https://www.cnblogs.com/weibanggang/p/11460537.html 第二步:下载安装tomcat 下载tomcat到 ...

  7. java转换编码报错java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern

    Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex cha ...

  8. SQLite介绍和使用

    SQLite特点: (1)轻量级,跨平台的关系型数据库,所以支持视图,事务,触发器等. (2)零配置-无需安装和管理配置,存储在单一磁盘文件中的完整的数据库 (3)数据库文件可共享,支持多种开发语言. ...

  9. JavaScript 的内置对象和浏览器对象

    JavaScript 中对象通常包括两种类型:内置对象和浏览器对象,此外用户还可以自定义对象. 在 ECMAScript 中,更精确的定义应该分为:本地对象.内置对象和宿主对象. 对象包含两个要素: ...

  10. 浏览器Notwork XHR被隐藏了

    图片中红色区域内容被隐藏 解决方式,点击此处