-
ORM思想:
对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。 本质上就是将数据从一种形式转换到另外一种形式。
-
不再重点关注:sql语句
-
主要目的: 操作实体类就相当于操作数据库中的表。
-
两个映射关系:
-
实体类和表的映射关系
-
实体类中的属性和表中字段的映射关系
-
-
实现ORM思想的框架:mybatis、hibernate。
-
当ORM思想刚出现的时候,许多厂家推出一大堆框架采用ORM思想,所以sun公司最后为了统一标准,指定了jpa规范,实现了这个规范的有:hibernate、toplink等, 真正工作的不是jpa,而是hibernate或者toplink等框架。
-
配置JPA的核心配置文件:
-
位置:META-INF的文件夹下 (项目中找不到 --> 一般是在resource目录下创建META-INF文件夹)
-
配置文件命名: persistence.xml
-
配置内容:
-
选择模板:创建xml文件并命名为persistence.xml之后,在META-INF上右键 --> new --> Edit File Templates.. -->选择other,在列表中找到JPA,选择Deployment descriptors(部署描述符),点击persistence_2_0.xml,右侧出现的部署模板就是
-
复制模板内容到persistence.xml
-
接下来配置persistence-unit节点(持久化单元):
-
持久化单元属性: < persistence-unit name = " myJpa " transaction-type = " RESOURCE_LOCAL " >
-
name:持久化单元名称,自己命名
-
transaction-type:事务管理方式,有两种:
-
JTA:分布式事务管理,一般在数据分布在多个不同的数据库时使用(一个数据库有一个链接,不用的数据库不能碰到一起,所以这个时候使用分布式事务管理)
-
RESOURCE_LOCAL:本地事务管理,就是使用一个数据库的时候使用
-
-
-
-
配置JPA的实现方式:(JPA是接口、JPA是规范,接口和规范不能干活,所以需要配置JPA的实现方式)
-
< provider > org.hibernate.jpa.HibernatePersistenceProvider </ provider >
-
-
配置数据库信息:(用来连接数据库)
-
一个属性一个property节点:<properties><property name="javax.persistence.jdbc.user" value="root"/><property name="javax.persistence.jdbc.password" value="12345"/><property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/><property name="javax.persistence.jdbc.url" value="jdbc:mysql:///jpa"/></properties>注意:在 javax.persistence.jdbc.url 中 value ="jdbc:mysql: /// jpa 是三个斜杠
-
-
可选配置:(配置JPA实现方(即hibernate)的配置信息)< property name ="hibernate.show.sql" value ="true" />
-
显示SQL语句: true|false
-
自动创建数据库表:
-
< property name = " hibernate.hbm2ddl.auto " value = " create " />
-
value可选值范围:
-
create:程序运行时创建数据库表,如果有表,那么就删除表再创建表
-
create-drop:创建删除策略 每次在操作的时候,先删除表 在创建表 在删除表(用完删掉) --没有用 比较临时表上面
-
update:程序运行时创建表,如果有表,则不会创建
-
none:不会创建表
-
validate:验证策略:验证数据库配置和实体对象配置是否一致,如果不一致就会报错
-
比如
-
数据库没有表,有对应的实体对象 报错
-
数据库表有多余字段 ,对应的实体对象没有字段 也不会错误
-
数据库少字段 username,实体对象有username ,会报错 --假如数据库已经把所有表创建好,我们自己在代码在创建好
-
-
-
-
-
-
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<!-- 需要配置persistence-unit节点
持久化单元:name:持久化名称,transaction-type事务管理方式
JPA:分布式事务管理,RESOURCE_LOCAL:本地事务管理-->
<persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
<!-- jpa的实现方式-->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- 数据库信息-->
<!-- 可选配置:配置jpa实现方法的配置信息-->
<properties>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="111111"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql:///jpa"/>
<!-- 配置jpa实现方法(hibernate)的配置信息,显示sql,false|true-->
<property name="hibernate.show.sql" value="true"/>
<!-- 自动创建数据库表,hibernate.hbm2ddl.auto
create 程序运行时创建表(如果有表,先删除,再创建)
update 程序运行时创建表(如果有表,不会创建表)
none 不会创建表-->
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>