JPA的学习

简介:

JPA 
1.实体注解 @Entity
主键注解  @Id   主键策略@GeneratedValue(strategy=GenerationType.AUTO[IDENTITY,SEQUENCE,TABLE]) auto:根据方言数据库自己选择,默认选项 identity:MySQL支持  sequence:oracle支持
@Column(length=32)字段长度 
@Temporal(TemporalType.DATE) 日期类型注解,只存储日期
@Lob 字段为长文本或者二进制数据时
@Transient 属性不和数据库字段映射
@Basic(fetch=Fetch.LAZY) 用在字段上面,延迟加载,用不到的时候是不会加载到内存的
2.提供的接口

EntityManagerFactory 功能等价于hibernate里的sessionFactory
EntityManager 等价于SessionManager

 

EntityManagerFactory factory=Persistence.careateEntityManagerFactory("[配置文件里的持久化单元名称]")
EntityManager em=factory.createEntityManager();
em.getTranscation().begin();  //开始事物em.persist(new Entity());
em.getTransaction().commit();
em.close();
factory.close();

find() :根据ID号加载实体,相当于hibernate里的get()
getReference(): 根据ID号懒加载实体类,只有访问实体类的对象时才会与数据库同步,相当于hibernate里的load
remove():删除,里面参数为对象
查询语句:

Query query=em.createQuery("select o from person o where o.id=?1");
query.setParameter(1,2);
List<Person> personList=query.getResultList();

 


更新查询:

1 Query query=em.createQuery("delete  from person o where o.id=?1");2 query.setParameter(1,2);3 quert.executeUpdate();

 

refresh():使内存中的Javabean和数据库数据再一次同步化。注:已经执行过find函数了,此时别人修改了数据库中的数据,你再次调用find函数是无法更新值得,因为jpa会默认从EntityManager中返回给你
3、双向管理与级联操作
1-m关系(用注解OneToMany):多的一方为关系的维护的,关系维护断负责外键记录的更新,关系被维护断是没有权利更新外键字段的

其中可以有参数cascade,值可取CascadeType.Refresh,CascadeType.persist等

fetch:值可取FetchType.EAGER(立即得到),FetchType.LAZY(延迟加载),默认为EAGER

mappedby:出现这个的类为关系的被维护端,值为维护端中的一个属性。例如订单和订单项,在订单里的订单项上的oneToMan注解中出现此参数,表示订单表Order为被维护的表,订单项表的OrderItem里的Order属性来维护,则mappedby的值就是"order"















本文转自xmgdc51CTO博客,原文链接: http://blog.51cto.com/12953214/1942926,如需转载请自行联系原作者






相关文章
|
7月前
|
存储 供应链 机器人
5 天学会阿里云 RPA:基础知识
阿里云 RPA(Robotic Process Automation)是一种软件技术,它可以模拟人类在计算机上的操作,从而实现自动化的流程执行。通过使用阿里云 RPA,企业可以减少重复性的手动操作,提高工作效率和准确性,同时降低人力成本和错误率。
|
2月前
|
SQL 安全 数据库
Pangolin渗tou实战
Pangolin渗tou实战
|
5月前
|
人工智能 自然语言处理 监控
RPA学习第一课 --初识RPA
RPA学习第一课 --初识RPA
644 1
|
Python
学习阿里云RPA
学习阿里云RPA
286 1
|
数据采集 容器
xpath实战
xpath实战
58 0
|
存储 SQL 前端开发
JPA3|学习笔记
快速学习JPA3
146 0
JPA3|学习笔记
|
存储 前端开发 Java
JPA 6|学习笔记
快速学习JPA 6
148 0
JPA 6|学习笔记
|
SQL 前端开发 Java
JPA2|学习笔记
快速学习JPA2
106 0
JPA2|学习笔记
|
Java 关系型数据库 MySQL
整合 JPA|学习笔记
快速学习整合 JPA
|
人工智能 Oracle 机器人
阿里云RPA这么火,我们要去学习使用吗?
学会了RPA技术,你就可以通过一些流程设计让他帮你去完成一些大量重复、枯燥的工作,平常你需要花费一上午、一下午才能完成的工作,RPA十分钟就可以解决,这样省下来的时间你就可以去发呆、思考、追剧等等你感兴趣的事情。这,难道它不香吗?
阿里云RPA这么火,我们要去学习使用吗?