>>分享JPA、Hibernate、Mybatis对象持久化技术,对《精通JPA与Hibernate:Java对象持久化详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23602 个阅读者 刷新本主题
 * 贴子主题:  十分钟入门 JPA 回复文章 点赞(0)  收藏  
作者:日月光华    发表时间:2024-04-20 08:02:20     消息  查看  搜索  好友  邮件  复制  引用


一.JPA的概念
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
为了节省时间,更加具体的解释我们就略过吧。

二.在IDEA中使用JPA

2.1.添加JAP依赖

添加相关的maven依赖
<properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <maven.compiler.source>1.7</maven.compiler.source>

        <maven.compiler.target>1.7</maven.compiler.target>

        <hibernate.version>5.2.17.Final</hibernate.version>

        <goda.time.version>2.9.9</goda.time.version>

    </properties>

    <dependencies>



        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.11</version>

            <scope>test</scope>

        </dependency>



        <!-- jdbc驱动包  -->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <version>5.1.37</version>

        </dependency>



        <dependency>

            <groupId>org.hibernate</groupId>

            <artifactId>hibernate-core</artifactId>

            <version>4.3.10.Final</version>

        </dependency>



        <dependency>

            <groupId>org.hibernate</groupId>

            <artifactId>hibernate-entitymanager</artifactId>

            <version>4.3.10.Final</version>

        </dependency>



        <dependency>

            <groupId>org.hibernate.javax.persistence</groupId>

            <artifactId>hibernate-jpa-2.1-api</artifactId>

            <version>1.0.0.Final</version>

        </dependency>



        <dependency>

            <groupId>org.hibernate.common</groupId>

            <artifactId>hibernate-commons-annotations</artifactId>

            <version>4.0.5.Final</version>

        </dependency>



        <!--持久化依赖-->

        <dependency>

            <groupId>joda-time</groupId>

            <artifactId>joda-time</artifactId>

            <version>${goda.time.version}</version>

        </dependency>



        <dependency>

            <groupId>org.jadira.usertype</groupId>

            <artifactId>usertype.core</artifactId>

            <version>6.0.1.GA</version>

        </dependency>



        <dependency>

            <groupId>antlr</groupId>

            <artifactId>antlr</artifactId>

            <version>2.7.7</version>

        </dependency>



        <dependency>

            <groupId>dom4j</groupId>

            <artifactId>dom4j</artifactId>

            <version>1.6.1</version>

        </dependency>



        <dependency>

            <groupId>org.jboss</groupId>

            <artifactId>jandex</artifactId>

            <version>1.1.0.Final</version>

        </dependency>



        <dependency>

            <groupId>org.javassist</groupId>

            <artifactId>javassist</artifactId>

            <version>3.18.1-GA</version>

        </dependency>



        <dependency>

            <groupId>org.jboss.logging</groupId>

            <artifactId>jboss-logging</artifactId>

            <version>3.1.4.GA</version>

        </dependency>



        <dependency>

            <groupId>org.jboss.logging</groupId>

            <artifactId>jboss-logging-annotations</artifactId>

            <version>1.2.0.Beta1</version>

            <scope>provided</scope>

        </dependency>



        <dependency>

            <groupId>org.jboss.spec.javax.transaction</groupId>

            <artifactId>jboss-transaction-api_1.1_spec</artifactId>

            <version>1.0.0.Final</version>

        </dependency>



        <dependency>

            <groupId>javax.ejb</groupId>

            <artifactId>ejb-api</artifactId>

            <version>3.0</version>

        </dependency>



    </dependencies>

2.2.配置JPA运行环境

        在IDEA中,resources文件夹下,也就是资源文件夹下,创建META-INF文件夹,在该文件夹下创建persistence.xml文件,添加以下配置。


<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.1"

             xmlns="http://xmlns.jcp.org/xml/ns/persistence"

             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence

             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">



    <persistence-unit name="MyJPA" transaction-type="RESOURCE_LOCAL">

        <properties>

            <property name="javax.persistence.jdbc.driver"

                      value="com.mysql.jdbc.Driver" />

            <property name="javax.persistence.jdbc.url"

                      value="jdbc:mysql://localhost:3306/jpa" />

            <property name="javax.persistence.jdbc.user" value="root" />

            <property name="javax.persistence.jdbc.password" value="root" />

            <property name="hibernate.dialect"

                      value="org.hibernate.dialect.MySQL5Dialect" />

            <property name="hibernate.show_sql" value="true" />

            <property name="hibernate.hbm2ddl.auto" value="update" />

        </properties>



    </persistence-unit>



</persistence>

如下:
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
2.3.创建表


CREATE TABLE `user` (

    `id` int(11) NOT NULL AUTO_INCREMENT,

    `name` varchar(255) DEFAULT NULL,

    `password` varchar(255) DEFAULT NULL,

   PRIMARY KEY (`id`)

   ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2.4.在IDEA中配置数据源
在IDEA的右边有Database,按以下步骤操作即可。
这里也可以不配置,配置之后,可以在IDEA中直接看到数据库中的表,并且之后再IDEA中写的代码也不用有警告。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
添加你的数据库名字,第一次配置下边会提示你下载插件,很具提示即可。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
2.5.测试

创建User类


package com.hly.jpa.model.oneToOne;



import javax.persistence.*;

/**

* @author :hly

* @github :github.com/SiriusHly

* @blog :blog.csdn.net/Sirius_hly

* @date :2018/9/27

*/


@Entity

//指定表名,指定唯一约束

@Table(name = "user",uniqueConstraints = {@UniqueConstraint(columnNames = {"id","name"})})

public class User {

    @Id//指定主键

    @GeneratedValue

    private int id;

    @Column

    private String name;

    @Column

    private String password;



    //一对一映射

    @OneToOne(optional = true, cascade = CascadeType.ALL)

    @JoinColumn(name = "articleId", unique = true)

    public Article article;



    //省略了getter和setter

}

/**

     * 获取应用管理的EntityManager

     */


    @Test

    public void testApplicationEntityManager() {

        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("MyJPA");

        EntityManager em = entityManagerFactory.createEntityManager();

        em.getTransaction().begin();

        User user = new User();

        user.setName("hly");

        //以上两行为新建状态

        //托管状态

        em.persist(user);

        //事务提交或调用flush()方法后会同步到数据库

        em.getTransaction().commit();

        //根据主键获取对象

        //System.err.println(em.find(User.class,1));

        //System.err.println(em.getReference(User.class,1));

        em.close();

        entityManagerFactory.close();

    }

数据库中插入数据则成功。

2.6.EntityManager接口
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
2.7.实体类中注解的含义

点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
本文转自:https://blog.csdn.net/Sirius_hly/article/details/82903041



程序猿的技术大观园:www.javathinker.net
网站系统异常


系统异常信息
Request URL: http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=942

java.lang.NullPointerException

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员