ORM思想与JPA文件配置详解

 
  • ORM思想:

对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。 本质上就是将数据从一种形式转换到另外一种形式。

  • 不再重点关注:sql语句
  • 主要目的操作实体类就相当于操作数据库中的表。
  • 两个映射关系
    1. 实体类和表的映射关系
    2. 实体类中的属性和表中字段的映射关系
  • 实现ORM思想的框架:mybatis、hibernate。
  • 当ORM思想刚出现的时候,许多厂家推出一大堆框架采用ORM思想,所以sun公司最后为了统一标准,指定了jpa规范,实现了这个规范的有:hibernate、toplink等, 真正工作的不是jpa,而是hibernate或者toplink等框架。
 

 
   
 
 
  • 配置JPA的核心配置文件:

    • 位置:META-INF的文件夹下 (项目中找不到 --> 一般是在resource目录下创建META-INF文件夹)
    • 配置文件命名: persistence.xml
    • 配置内容:
    1. 选择模板:创建xml文件并命名为persistence.xml之后,在META-INF上右键 --> new --> Edit File Templates.. -->选择other,在列表中找到JPA,选择Deployment descriptors(部署描述符),点击persistence_2_0.xml,右侧出现的部署模板就是
    2. 复制模板内容到persistence.xml
    3. 接下来配置persistence-unit节点(持久化单元):
      •   持久化单元属性: < persistence-unit name = " myJpa " transaction-type = " RESOURCE_LOCAL " >
        • name:持久化单元名称,自己命名
        • transaction-type:事务管理方式,有两种:
          1. JTA:分布式事务管理,一般在数据分布在多个不同的数据库时使用(一个数据库有一个链接,不用的数据库不能碰到一起,所以这个时候使用分布式事务管理)
          2. RESOURCE_LOCAL:本地事务管理,就是使用一个数据库的时候使用
    4. 配置JPA的实现方式:(JPA是接口、JPA是规范,接口和规范不能干活,所以需要配置JPA的实现方式)
      • < provider > org.hibernate.jpa.HibernatePersistenceProvider </ provider >
    5. 配置数据库信息:(用来连接数据库)
      • 一个属性一个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 是三个斜杠
    6. 可选配置:(配置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:验证策略:验证数据库配置和实体对象配置是否一致,如果不一致就会报错
            • 比如
              1. 数据库没有表,有对应的实体对象 报错
              2. 数据库表有多余字段 ,对应的实体对象没有字段 也不会错误
              3. 数据库少字段 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>

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值