JPA基础知识

JPA基础知识

概念:

jpa是一种ORM(对象映射模型)规范

Hibernate是一套持久层框架,也是jpa的实现之一,同时也是最好的实现,其底层还是jdbc

JPA 和 JDBC的区别

Java操作数据库只能使用jdbc实现,jpa的底层还是jdbc

Jdbc:运行效率高(越低层运行效率越高)

Jpa:开法效率高

​ 兼容各种数据库

​ 有内置缓存(优化)

​ 缺点:性能不好控制

配置核心文件(persistence.xml)
<persistence-unit name="持久化单元名称【随便写,有意义】" transaction-type="事务类型【RESOURCE_LOCAL:本地事务;JTA】">//持久化单元,一个持久化单元连接一个数据库
<properties>属性
//四大金刚【驱动,数据库地址,用户,密码】

<propert   name="hibernate.connection.driver_class"value="com.mysql.jdbc.Driver"></property>
<property     name="hibernate.connection.url" value="jdbc:mysql:///jpa"></property>
<property name="hibernate.connection.username" value="root"></property>
<property     name="hibernate.connection.password" value="1q2w3e"></property>
//方言 数据库引擎、版本
<property     name="hibernate.dialect  org.hibernate.dialect" value="MySQLDialect"></property>
//自动建表
<property name="hibernate.hbm2ddl.auto" value="update"></property>
...
</properties>

实体类:

类注解:

@Entity:告诉JPA该类要创建表

@Table(name=“xxxx”):设置表名

属性注解:

@id:把id设置成主键(也可以是其他属性)

@GeneratedValue:自增策略

@Lob 装大量数据

@Temporal :时间

@Transient:使改属性不添加到表中

@Colnum(参数列表):设置其他的一些字段属性

参数列表:

insertable=false  不允许添加 
updatable=false  不允许修改
name=列表名(添加该属性)
length=修改长度 
nullable:非空 
unique:唯一 )

JPA的CRUD

//创建ben工厂
EntityManagerFactory factory=Persistence.createEntityManagerFactory("持久单元名");
//获取EntityManager对象
EntityManager entityManager = factory.createEntityManager();
//开启事务
entityManager.getTransaction().begin();
//操作
entityManager....
//关闭事务
entityManager.getTransaction().commit();
//释放资源
entityManager.close();

添加:

persist(obj);

修改:

merge(obj);

删除:

remove(obj);

//注:删除之前需要先查询这条数据,如果存在则删除,所有参数就是查询到的这条数据

查询一条数据:

find(实体类.class , id);

查询多条数据:

先通过jpql语句获取到Query对象,然后调用getResultList()方法,如:

//创建jpql语句
String jpql = "select o from "+cls.getName() + " o";
//获取Query对象
Query query = entityManager.createQuery(jpql);
//通过Query对象获得结果集合
List resultList = query.getResultList();

注:查询语句不需要事物管理

建表策略(自动建表value值)

Create-drop

先删除表,在创建,在删除【在删除条件:工厂释放资源】

Create

先删除表,在创建

Update

更新;表存在就更新数据,不存在就创建表(特性:只增不减,在表中属性只会执行添加,不会减少且属性类一旦创建也不会在此改变)

核心API

Persistence【持久化对象】

创建工厂对象

EntityManagerFactory

【工厂对象;重量级对象】:实体管理工厂,线程安全;一个项目对应一个工厂对象

重:(1)含有连接池

(2)二级缓存

​ (3)所有预定sql,jpql语句

​ (4)所有对象关系

EntityManager

【连接对象,轻量级对象】:数据库连接,线程不安全;一个线程对应一个对象

轻:一级缓存

EntityTransaction

事务对象

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值