Hibernate知识点小结(四)--JPA
一、jpa的简介和入门
JPA:Java Persistence API,接口规范
Hinernate内部为JPA规范提供实现
开发步骤(EntityManager):
1、导入额外包:hibernate-release-5.0.7.Final\lib\jpa\hibernate-entitymanager-5.0.7.Final.jar
2、使用jpa注解配置实体(实体与表的映射关系)
3、配置EneityManager的核心配置文件
在类加载路径下(src)下创建一个文件夹,名称META-INF
在META-INF目录下创建核心配置文件 persistence.xml
4、使用EntityManager的API对实体进行操作
二、Hibernate JPA的一对多的配置
创建实体
配置映射关系
customer方:
//当前客户有哪些联系人
//一的一方:配置一对多,在多的一方维护外键(一的一方放弃外键维护权)
//targetEntity:对方的字节码对象
//mappedBy: 对方通过哪个属性与我方维护关系(mappedBy在放弃外键维护权的一方配置)
@OneToMany(targetEntity=Linkman.class,mappedBy="customer")
private Set<Linkman> linkmans = new HashSet<>();
linkman方:
//当前联系人属于哪一个客户
//配置多对一
//targetEntity:对方的字节码对象
@ManyToOne(targetEntity=Customer.class)
//维护外键 JoinColumn:连接字段信息(外键信息)
//name:外键名称 referencedColumnName:与外键对应的主键名称
@JoinColumn(name="lkm_cust_id",referencedColumnName="cust_id")
private Customer customer;
操作实体
三、Hibernate JPA的多对多的配置
创建实体
配置映射关系
user方:
//当前该用户具备哪些角色
//配置多对多
//targetEntity:对方的字节码对象
//mappedBy:对方通过哪个属性与我方维护关系(放弃外键维护权的一方配置)
@ManyToMany(targetEntity=Role.class,mappedBy="users")
private Set<Role> roles = new HashSet<>();
role方:
//当前该角色被哪些用户使用
//配置多对多
//targetEntity:对方的字节码对象
@ManyToMany(targetEntity=User.class)
//User放弃外键维护权 Role去维护外键
//配置关系
//name:中间表的名称
@JoinTable(
name="sys_user_role",
//joinColumns的name:该方(Role)在中间表中产生的外键名称
//joinColumns的referencedColumnName:该方在中间表中产生的外键对应的主键名称
joinColumns={@JoinColumn(name="rid",referencedColumnName="role_id")},
//inverseJoinColumns的name:对方(User)在中间表中产生外键名称
//inverseJoinColumns的referencedColumnName:对方(User)在中间表中产生外键对应的主键名称
inverseJoinColumns={@JoinColumn(name="uid",referencedColumnName="user_id")}
)
private Set<User> users = new HashSet<>();
操作实体
ORM-->Jpa-->Hibernate的关系
Hibernate知识点小结(四)--JPA的更多相关文章
- Hibernate知识点小结(三)-->一对多与多对多配置
一.多表关系与多表设计 1.多表关系 一对一: 表的设计原则(分表原则): 优化表的性能 基于语意化分表 ...
- Hibernate知识点小结(二)
一.持久化对象和标识符 1.持久化类 配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id) 3.持久 ...
- Hibernate知识点小结(一)--快速入门
一.Hibernate的简介 1.Hibernate是一个开放源代码的对象关系映射框架 2.对象关系映射:ORM Object Relation Mapping 对象与数据 ...
- Spring知识点小结(四)
一.JdbcTemplate(jdbc模版--抽取的工具) web阶段DBUtils: QueryRunner runner = new QueryRunner(dataSource); ...
- Hibernate知识点小结汇总
Hibernate部分 1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复 ...
- Struts2知识点小结(四)--拦截器与注解开发
一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...
- C++重要知识点小结---3
C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...
- C++重要知识点小结---2
C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继 ...
- React及Nextjs相关知识点小结
React及Nextjs知识点小结 函数式组件和类组件区别是什么 1.函数式组件是用于创建无状态的组件,组件不会被实例化,无法访问this中的对象,无法访问生命周期方法,是无副作用的,相比于类组件函数 ...
随机推荐
- 世界、国家、省、城市SQL
共享一份 世界.国家.省.城市最全的SQL(mysql可直接使用),笔者是花了下载币下载的 下载SQL # pid=0 获取所有国家 # pid=99999999 获取中国的省.自治区.直辖 ...
- 用AJAX实现页面登陆以及注册用户名验证
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX 是一种用于创建快 ...
- Thrift笔记(一)--Hello Demo
Thrift是一个RPC框架 1. 用IDL定义好实体和服务框架,如实体字段名,类型等.服务名,服务参数,返回值等 2. 通过编译器或者说代码生成器生成RPC框架代码 IDL语法,代码生成器的安装使用 ...
- python高阶函数sorted
原文 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因 ...
- typeScript入门(四)泛型
泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能. 在像C#和Ja ...
- asp and javascript: sql server export data to csv and to xls
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> <% //塗聚文 //20131021 functio ...
- es6新增的数组方法和对象
es6新增的遍历数组的方法,后面都会用这个方法来遍历数组,或者对象,还有set,map let arr=[1,2,3,4,3,2,1,2]; 遍历数组最简洁直接的方法法 for (let value ...
- 我的书单mybooklist
首先自我介绍一下,我是一名程序员. 计算机的世界太浩瀚,而我太过渺小. 比计算机的世界更为广大的是,书籍的海洋.学海无涯. 无论是计算机的世界,还是其他类书的世界,人一辈子要看的书看也看不完. 于是我 ...
- conversion vs recommendation
conversion vs recommendation: http://markdisomma.com/2011/06/16/conversation-vs-recommendation/
- 编程中遇到的Python错误和解决方法汇总整理
这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...