我的jpa学习

一.介绍下jpa

JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。(这个百度解释借鉴下^_^),对于概念什么的这么多估计够了。其实jpa就是sun公司想玩一个大一统,就是sun公司想把一些持久层框架进行统一规范下这样项目在更换框架时也不需要做太大的改动,大体就是这个意思废话不多说实战才是真的。

二.jpa小试牛刀

这里我以jpa(hibernate版)为例。

1.首先我们需要引入一些jar包,这里我截下图,引入的有点多^_^,网上也有很多别人打好包的大家只需要下载即可

2.我们需要在classpath下构建一个META-INF文件夹,在此文件夹内放一个persisitence.xml文件

文件夹构建好后我们就要配置我们的persistence.xml文件了

<?xml version="1.0" encoding="utf-8"?>
  <persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">  

<!-- 这个itcast后面在获取EntityManageFactory有用 -->
<persistence-unit name="itcast" transaction-type="RESOURCE_LOCAL">  

    <!-- 指定了你用的是hibernate -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
   <properties>
       <!-- 下面这些和hibernate的配置没什么区别 -->
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
    <property name="hibernate.connection.username" value="root" />
    <property name="hibernate.connection.password" value="root" />
    <property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1:3306/jpa" />
    <!--<property name="hibernate.max_fetch_depth" value="3" />   -->
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.hbm2ddl.auto" value="create"/>
   </properties>  

</persistence-unit>
</persistence>

上面就是jpa的配置了,下面就让我们实际操作下

3.实战

首先呢,我们需要一个domain对象

package com.guo.model;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user")//这个属性可以不写,到时候你的类名和表名是一样的
public class User {

    //jpa在默认缺省情况认为你的属性都需要绑定到数据库里面,而且你的字段名和属性名是一样的

    @Id//表明这是个主键
    @GeneratedValue()//这是表明生成器,如果不写会用native自己去选择,这个注解可以使用在get方法上也行
    private int id;
    private String name;
    private Date birthday;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

}

关于domain对象中的一些注解的使用要注意引入的包:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

记住千万不要引错包,不要引入hibernate下面的类了

关于里面的注解怎么使用的网上有很多的资料,我这里就不详解了^_^

我们再写一个JPAUtil类,这个类主要就是帮助我们获得到EntityManagerFactory,这个类相当于hibernate中的SessionFactory

package com.guo.jpa;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public final class JPAUtil {
  //相当于hibernate中的SessionFactory
    private static EntityManagerFactory emf = null;

    static{
        emf = Persistence.createEntityManagerFactory("itcast");
    }

    //获得EntityManager对象,这里的EntiyManager对象就相当于hibernate中session
    public static EntityManager getEntityManager()
    {
        return emf.createEntityManager();
    }
}

然后下面我们再写一个测试类,这个测试类中包含了一些方法

package com.guo.jpa;

import java.util.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

import com.guo.model.User;

public class BaseTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        User user = new User();
        user.setName("xiaohong");
        user.setBirthday(new Date());

        addUser(user);
    }

    //增加一个用户信息
    static void addUser(User user)
    {
        EntityManager em = null;
        //使用事务
        EntityTransaction tx = null;
        try {
            em = JPAUtil.getEntityManager();
            tx = em.getTransaction();

            //添加对象信息
            em.persist(user);

            tx.begin();
            tx.commit();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}

4.运行,成功^_^

这个算的上是入门吧,当然后面还有jpaql

时间: 2024-10-31 01:42:32

我的jpa学习的相关文章

JPA学习笔记(5)——EntityManager相关

Persistence EntityManagerFactory EntityManager find方法 getReference方法 persist方法 remove方法 merge方法 情况1传入的对象没有id 情况2传入的对象有identityManager的缓存中没有该对象数据库中没有该记录 情况3传入的对象有identityManager的缓存没有该对象数据库中有该记录 情况4传入的对象有identityManager的缓存有该对象 flush方法 refresh方法 clear c

JPA学习---第一节:JPA详解

一.详解 JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据.他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate.TopLink等ORM框架各自为营的局面.值得注意的是,JPA是在充分吸收了现有Hibernate.TopLink等ORM框架的基础上发展而来的,具有易于使用.伸缩性强等优点.从目前的开发社区的反应上看,JPA受到了极大的支持

JPA学习笔记(8)——映射一对多关联关系

一对多关联关系 本文有很多和多对一是一样的,因此不会写得非常具体. 有看不懂的.能够參考JPA学习笔记(7)--映射多对一关联关系 Order实体类 package com.jpa.helloworld2; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; imp

Spring入门---JPA学习笔记

用了一段时间的Spring,到现在也只是处于会用的状态,对于深入一点的东西都不太了解.所以决定开始深入学习Spring. 本文主要记录JPA学习.在学习JPA之前,需要了解一些ORM的概念. ORM概念: 对象关系映射ORM(Object/Relation Mapping)是一种为了解决面向对象和关系数据之间存在互不匹配现象的技术(范式不匹配).简而言之,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到数据库中.本质上是将数据从一种形式转换到另外一种形式.(个人考虑:

JPA学习(三、JPA_API)

框架学习之JPA(三) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作:其二,Sun希望整合ORM技术,实现天下归一. 学习视频:尚硅谷框架jpa学习(有兴趣的同学留言邮箱) 使用软件:eclipse Java版本:jdk8 本节目录 三.JPA_API 1.Pe

JPA学习(六、JPA_JPQL)

框架学习之JPA(六) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作:其二,Sun希望整合ORM技术,实现天下归一. 学习视频:尚硅谷框架jpa学习(有兴趣的同学留言邮箱) 使用软件:eclipse Java版本:jdk8 本节目录 六.JPA_JPQL 1.H

JPA学习(五、JPA_二级缓存)

框架学习之JPA(五) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作:其二,Sun希望整合ORM技术,实现天下归一. 学习视频:尚硅谷框架jpa学习(有兴趣的同学留言邮箱) 使用软件:eclipse Java版本:jdk8 本节目录 五.JPA_二级缓存 1.添

spring data jpa学习笔记一:helloworld

在学习 JPA Spring Data之前,我们有必要了解一下JPA和Spring Data. JPA JPA全称Java Persistence API.即java持久化规范.JPA通过注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Spring Data Spring Data是Spring框架的一个子项目,就像Spring MVC是Spring的一部分一样.使得数据库访问变得方便和快捷.Spring Data 支持JPA. JPA Spring Data J

JPA学习(3)JPA API

在我们的jpa的helloworld中,我们看到了简单的一个jpa保存操作,下面就来好好学习一下,JPA最主要的几个类 1.基本的几个类: ①:Persistence 类是用于获取 EntityManagerFactory 实例.该类包含一个名为 createEntityManagerFactory 的 静态方法 . createEntityManagerFactory 方法有如下两个重载版本. 带有一个参数的方法以 JPA 配置文件 persistence.xml 中的持久化单元名为参数 我们

JPA学习笔记(3)——JPA注解

Entity Table Id GeneratedValue Basic Column Transient Temporal @Entity @Entity 标注用于实体类声明语句之前.指出该Java 类为实体类,将映射到指定的数据库表. @Table 当实体类与其映射的数据库表名不同名时须要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行.也可与声明语句同行. @Table 标注的经常使用选项是 name.用于指明数据库的表名 @T