JPA入门 您所在的位置:网站首页 jpa快速入门 JPA入门

JPA入门

#JPA入门| 来源: 网络整理| 查看: 265

ORM思想:

主要的目的:使得操作实体类就想操作数据库表一样 实现方式:建立两个映射关系

实体类和表的映射关系 实体类中属性和表中字段的映射关系

最终效果:使得与数据库的数据交互不在重点关注sql语句

hibername框架简介:

hibername是一个对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库建立了映射关系,是一个全自动封装的ORM框架,hibername可以自动生成sql语句,自动执行,使得程序员无需关注sql语句,随心所欲的调用hibername提供的方法以面向对象的思维进行开发,了解,因为SpringDataJpa底层使用了hibername框架

JPA规范

就像JDBC的规范一样,由官方制定,内部由接口和抽象类组成,不同的厂家根据规范进行不同的实现,我们在使用时,只需要指定对应厂家即可,JPA也是一种规范,有多种实现,SpringDataJpa也只是一种实现方式

JPA规范 JPA规范

JPA基本操作

使用注解或者一点点代码调用JPA规范暴露出来的接口或者抽象类,底层有hibernate实现数据库的交互

以案例入手,快速入门JPA 案例需求:学生表的CRUD操作 1)、环境搭建 创建maven工程,导入依赖

junit junit 4.11 org.hibernate hibernate-entitymanager 5.0.12.Final com.alibaba druid 1.1.14 log4j log4j 1.2.17 mysql mysql-connector-java 8.0.17

配置jpa的核心配置文件,要求在resources文件夹下创建META-INF文件夹,在内部创建名为persistence.xml的配置文件

文件结构

之后可以右键查看模板创建文件

查看模板 找到jpa的模板,复制黏贴即可 jpa模板

配置详细内容

org.hibernate.jpa.HibernatePersistenceProvider

编写数据表对应的实体类

/** * 配置映射关系: * 实体类和表的映射关系 * 实体类中属性和表中字段的映射关系 */ @Data @Entity //声明此类是一个实体类 @Table(name = "student_info") //实体类和表的映射关系 public class student { @Id //设置主键 @GeneratedValue(strategy = GenerationType.IDENTITY) //设置主键自增 @Column(name = "sid") //实体类中属性和表中字段的映射关系 private int sid; //设置主键自增则该主键类型必须为int @Column(name = "sname") private String sname; @Column(name = "sage") private int sage; @Column(name = "ssex") private String ssex; public student() { } public student(String sid, String sname, int sage, String ssex) { this.sid = sid; this.sname = sname; this.sage = sage; this.ssex = ssex; } }

2)、测试CRUD操作

public class test { /** * jpa的操作步骤 * 1、加载配置文件创建工厂类(实体管理器类工厂) * 2、通过实体管理器类工厂创建实体管理器类 * 3、获取事务对象,开启事务 * 4、完成CRUD操作 * 5、提交事务(或回滚事务) * 6、释放资源 */ @Test public void test01() { //1、加载配置文件创建工厂类(实体管理器类工厂) EntityManagerFactory jpa01 = Persistence.createEntityManagerFactory("jpa01"); //2、通过实体管理器类工厂创建实体管理器类 EntityManager em = jpa01.createEntityManager(); //3、获取事务对象,开启事务 EntityTransaction tx = em.getTransaction(); //获取事务对象 tx.begin(); //开启事务 //4、创建实体类对象,完成CRUD操作 student stu = new student(); //设置主键自增则创建的实体类不需要设置主键属性 stu.setSname("小杨JPA"); stu.setSage(1); stu.setSsex("男"); em.persist(stu); //保存操作 //5、提交事务(或回滚事务) tx.commit(); //6、释放资源 em.clear(); jpa01.close(); } }

测试结果 成功的创建了表,使用create的注意点,因为每次启动都会删除原来的表创建新的表,则表中的数据永远都只会是最新一次执行的CRUD操作的结果

update


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有