7-23JPA入门

一.课程介绍
1. 介绍什么是JPA、为什么需要JPA、JPA优缺点/ORM的概念;(了解)
2. 第一个JPA程序(掌握)
3. JPA CRUD;(重点掌握)
4. JPA的核心API认识(理解)
5. 配置自动生成表;(掌握)
6. 单表映射细节(掌握)
1什么是JPA
(1)Java持久层API,jpa就是做持久层,操作数据库
(2)它是对象映射框架(ORM)的规范
ORM: 对象关系映射(Object Relational Mapping,简称ORM)
JPA和Hibernate的关系
JPA是持久化规范,Hibernate是实现
JPA的优缺点
本质:处理Java对象和关系型数据库表之间的转换,只是对JDBC再次做了一层封装
优点:
1.程序员操作很简单,代码简单 entityManager.persist(employee);
2.直接面向持久对象操作
3.提供世界级数据缓存(现在几乎所有的ORM框架的缓存都是学的Hibernate)
一级缓存,二级缓存,查询缓存(空间换速度)
4.数据库移植性很强,很少的修改(通过配置方言搞定)
把各种数据库抽取了一个方言接口
不同数据库实现一个方言接口,如果换了数据库,必须修改方言实现,驱动jar文件,连接数据库信息。
缺点:
不能干预sql的生成 ,查询一个数据 find 默认查询所有字段 (select * from )
(2)有些优化 jpa做不了,比如特别大数据量的时候,jpa也不适合,mybatis也解决不了 (架构策略 分库 分表 (分布式))
(3)一个项目里面 对sql要求比较高,就不适合jpa
2.ORM概念
ORM 就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表的
操作
3.第一个jpa程序
先配置,在导包
配置pom.xml和persistence.xml
还有JPA工具类的完成

@Entity
@Table(name="t_user")
public class User {
    @Id
    @GeneratedValue
    private long id;
    @Column(name = "username",length = 120)
    private String name;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

然后利用JPA框架对数据库进行增删改查

public class TestJPA {
    @Test
    public void testJpa() throws Exception{
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("cn.itsource.jpa");
        factory.close();

    }

    @Test
    public void testadd() throws Exception{
        User user = new User();
        user.setName("哈麻皮");
        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("cn.itsource.jpa");
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        entityManager.getTransaction().begin();//开启事务
        entityManager.persist(user);
        entityManager.getTransaction().commit();//提交事务
        entityManager.close();
        entityManagerFactory.close();

    }

    @Test
    public void testUpdate() throws Exception{
        User user = new User();
        user.setId(1L);
        user.setName("公鸡");
        //获取entityManager
        EntityManager entityManager = JpaUtil.getEntityManager();
        entityManager.getTransaction().begin();
        entityManager.merge(user);
        entityManager.getTransaction().commit();
        entityManager.close();
    }
    @Test
    public void testQueryOne() throws Exception{
        EntityManager entityManager = JpaUtil.getEntityManager();
        //User Long
        User user = entityManager.find(User.class, 1L);
        System.out.println(user);
    }
    @Test
    public void testQueryAll() throws Exception{
        EntityManager entityManager = JpaUtil.getEntityManager();
        String jpql = "select o from User o";
        Query query = entityManager.createQuery(jpql,User.class);
        List<User> list = query.getResultList();
        for (User o : list) {
            System.out.println(o);
        }
        list.forEach(user->{
            System.out.println(user);
        });

    }
    @Test
    public void testDel() throws Exception{
        EntityManager entityManager = JpaUtil.getEntityManager();
        //持久化的状态
        User user = entityManager.find(User.class, 1L);
        entityManager.getTransaction().begin();
        if(user != null) {
            entityManager.remove(user);
        }
        entityManager.getTransaction().commit();
        entityManager.close();
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值