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. IDEA更改JavaScript版本

    最好改两个地方 File -> File -> -- --

  2. Python之颜色的表示

    字背景颜色范围:40----49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 字颜色:30-----------39 30:黑 31:红 32:绿 33 ...

  3. Shell的展开

    Shell的展开 2018-5-30   Writen By Stephen.Yu  一.路径名展开 shell执行echo命令前,在命令行上自动展开任何符合条件的字符,例如这里,* 被展开成当前的路 ...

  4. 2019牛客暑期多校训练营(第二场)H Second Large Rectangle

    示例一: 输入  : 1 2 01 输出: 0 示例二: 输入  : 1 3 101 输出: 1 示例三(自己自测找错误用的): 输入  : 6 610011111101111111111111111 ...

  5. 下载并使用MNIST数据集

    TensorFlow提供了一个库,可以直接用来自动下载与安装MNIST. MNIST里包含3个数据集:第一个是训练数据集(mnist.train.images),另外两个分别是测试数据集(mnist. ...

  6. es常用操作

    1.查看所有索引 _cat/indices?v 2.删除索引 DELETE my_index 3.查询缓存 curl /my_index/_search?request_cache=true' -d' ...

  7. select中的option被选中时页面的跳转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Redis cluster的核心原理分析

    一.节点间的内部通信机制 1.基础通信原理 (1)redis cluster节点间采取gossip协议进行通信 跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间 ...

  9. Oracle解决锁表语句与批量生成解锁语句

    --以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$proce ...

  10. 使用NPOI进行Excel操作

    一.NPOI组件导入 右键项目菜单,“管理NuGet程序包” 直接搜索“NPOI”即会出现列表,下载第一个进行安装即可 安装完成后项目引用会出现以下几项 二.基础使用 添加引用 using NPOI. ...