JPA简单入门

JPA

JPA全称为:Java Persistence API,译为java持久层api。持久层,明显是用于操作数据库的。它是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

ORM

说道jpa 就必须了解一下orm思想。全称:Object Relational Mapping,译为对象关系映射。简而言之就是将java中的实体类与数据库的表进行关联映射、实体类的属性与数据库表中的字段进行关联映射。

实操

废话不多说,上实操。

  1. 创建java的maven工程
  2. 导入需要的坐标
 <dependency>
 		<!-- 核心包-->
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.4.10.Final</version>
        </dependency>
        <!--测试单元-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!--    mysql8.0.22驱动(取决于自己数据库版本)-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
        <!--    日志(可有可无)-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- 阿里连接池(c3p0等其他连接池也可以) -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>
    </dependencies>
  1. 配置jpa核心配置文件
    此处有个特别注意地方:此文件必须在名为MATE-INF 文件夹目录里,且命名为persistence.xml 否则获取不到!
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<!-- 两种取值:RESOURCE_LOCAL 本地操作, JTA:分布式操作,这里做演示 使用本地操作-->
    <persistence-unit name="MyJPA" transaction-type="RESOURCE_LOCAL">
       <!--  指定jpa的实现方式-->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="javax.persistence.jdbc.user" value="root"/>
           <!-- 注意:8.0以前的数据库 为com.mysql.jdbc.Driver-->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <!-- 注意:8.0以前的数据库 不需要: ?serverTimezone=GMT-->
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/sys?serverTimezone=GMT"/>
            <property name="javax.persistence.jdbc.password" value="数据库密码"/>
       <!--   配置hibernate-->
            <!--   展示发送的sql语句  -->
            <property name="hibernate.show_sql" value="true"/>
            <!-- 规定建表操作 三个取值:creat(每次都创建)update(有则不创建) none(不创建)-->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
  1. 编写实体类
import javax.persistence.*;
/**
 * @author cql
 * @date 2021/8/2
 */

@Entity  //意为实体类
//指定此实体类创建的表名,注:在hibernate4.3只有 此注解会保存但是不影响代码执行 可以将此简写为 @Entity(name ="t_stuent")
@Table(name ="t_stuent")
public class Student {
    @Id //指定主键
    // mysql:IDENTITY(主键自增)  oracle:SEQUENCE(主键序列化) 其他取值:TABLE 创建额外的新表保存主键 AUTO:自动判断
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    //当表字段名和属性名不一致时使用,指定此属性为某个字段
    @Column(name = "name")
    private String name;

    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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
  1. 测试
  @Test
    public void test01(){
    	//创建工厂
        EntityManagerFactory myJPA = Persistence.createEntityManagerFactory("MyJPA");
        //创建实体类管理
        EntityManager entityManager = myJPA.createEntityManager();
       //用于操作事务
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();
        Student student=new Student();
        student.setName("张三");
        //增加方法
        entityManager.persist(student);
        transaction.commit();
    }
  1. 测试结果
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值