JPA(java persistence API)访问企业级信息

1引言:java语言是面向对象的,数据库是关系型数据库,因此项目中出现对象和关系数据两种表现形式.java开发人员不得不编写繁琐的代码实现java对象和关系型数据之间的相互转换.后来产生了java对象和关系型数据库之间自动映射的持久化框架,称为对象-关系映射(ORM).著名的框架有Hiberbate,iBatis,EclipseLink等,javaEE5.0规范中推出了JPA,在javaEE6.0推出JPA2.0,实现JPA2.0的有Hiberbate3.5,EclipseLink2.4和openJPA2.0等.
2数据库访问可以清晰的分为三层(应用层,接口层,驱动层):应用层,程序员开发,javaEE应用.接口层,Sun,connection(代表数据库连接)statementt(代表对数据库的操作)resultset(数据操作返回的结果集).JDBC驱动层,数据库厂商,JDBC驱动程序.
3JPA访问数据库需要做的工作:
3.1创建持久化单元,persistence.xml.配置数据库连接的相关的数据源,持久化实现,事务属性.
3.2创建Entity对象,实现serializable接口,利用注解@entity(是一个映射到数据库的持久化实体)和@id(作为主键)把一个普通的JavaBean声明成为Entity. entity即映射到关系型数据库的JavaBean,JPA操作的java对象,是一个普通的java对象,通常一个entity对应数据库中的一个表.一个entity实例对应一行表中的记录,一个entity属性对应表中的一个字段.
3.3创建EntityManager实例,javaEE中的应用服务器(tomcat,glassfish等)可以直接将EntityManager实例注入到web组件或EJB组建中,最后调用EntityManager的方法完成对Entity的保存,更新,和删除.
3.4普通java对象和Entity的区别:普通java对象只能在jvm中运行,entity具有跨越在java对象和关系型数据库两大空间的生命周期特性.4
4ORM属性
4.1@column:将Entity中的属性同数据库中的字段 映射 .常用属性:name,unique,nullable,insertable,udateable,length,precision(十进制精度),scale(十进制范围).
4.2@Temporal:如果使用java.util.包下面的时间日期类型,,则必须标注@Temporal注解来说明转换成java.sql包中的类型,被转化的类型有java.sql.Date,java.sql.Time,java.sql.Timestamp.
4.3@Transient:忽略此属性,不持久化到数据库.
4.4@Lob:大数据对象,数据库将采取特殊的处理方式,char[],character[]等String类型的属性通常映射Clob字段,byte[],Byte[]等实现了serializable接口的对象通常映射Blob类型的字段.
4.5@ElementCollection:标识他是一个集合属性.
4.6@Enumerated:标识枚举类型,JPA默认保存int类型.
5关联映射
5.1一对一:@onetoone,属性:cascade(级联操作类型),fetch(加载范式),optional(是否存在空值).关联关系分单向和双向两种.
5.2一对多:@onetomany.
5.3多对一:@manytoone,和一对多是一对互逆的关系.
5.4多对多:@manytomany.
6加载方式:eager(立即加载,此时关联的Entity也被实例化,这样可以快速相应客户端,但是性能下降),lazy(延迟加载,此时关联的Entity被访问时才去加载,但可能对客户的相应不够及时).
7EntityManager:尽管通过ORM可以在Entity和关系数据库直接爱你建立关联映射关系,但他们之间并不能自动同步,JPA提供EntityManager来管理和维护Entity的状态以及实现Entity与关系型数据之间的同步操作.
8Entity操作:
8.1新增,set一个对象,然后调用EntityManager的persist方法,保存到持久化上下文
8.2查询,em的find()方法或者getreference(),区别:find()在数据库没有找到记录时返回null,getreference()抛出异常.getreference()不保证Entity已被初始化,,在一定条件下可以优化性能.
8.3修改,set修改,em的flush()方法.
8.4删除,em的remove(要删除对象)方法.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值