JPA环境搭建(入门案例)

导入坐标

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.hibernate.version>5.0.7.Final</project.hibernate.version>
</properties>

<dependencies>
    <!-- junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

    <!-- hibernate对jpa的支持包 -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${project.hibernate.version}</version>
    </dependency>

    <!-- c3p0 -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>${project.hibernate.version}</version>
    </dependency>

    <!-- log日志 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    <!-- Mysql and MariaDB -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
</dependencies>

实体类的创建及其数据库表映射关系的配置

@Entity
@Table(name = "cst_customer")
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cust_id")
    private Long custId;  //客户的主键

    @Column(name = "cust_name")
    private String custName; //客户名称

    @Column(name = "cust_source")
    private String custSource; //客户来源

    @Column(name = "cust_level")
    private String custLevel; //客户级别

    @Column(name = "cust_industry")
    private String custIndustry; //客户所属行业

    @Column(name = "cust_phone")
    private String custPhone; //客户的联系方式

    @Column(name = "cust_address")
    private String custAddress; //客户地址
}

配置 JPA 的核心配置文件

java工程的src路径下创建一个名为META-INF的文件夹,在此文件夹下创建一个名为persistence.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
       <!--jpa的实现方式-->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <!--可选配置:配置jpa实现方式的配置信息-->
        <properties>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="123"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql:///jpa"/>
            <!--jpa实现方(hibernate的配置信息)-->
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

测试类(测试保存方法)

    @Test
    public void testSave(){
        //1.加载配置文件创建工厂(实体管理类工厂)对象
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
        //2.通过实体管理类工厂获取实体管理器
        EntityManager entityManager = factory.createEntityManager();
        /*使用工具类获取EntityManager对象(实体管理器)
        EntityManager entityManager = JpaUtils.getEntityManager();*/
        //3.获取事务对象,开启事务
        EntityTransaction tx = entityManager.getTransaction();//获取事务对象
        tx.begin();//开启事务
        //4.完成增删改查操作
        Customer customer = new Customer();
        customer.setCustName("LEEWLE");
        customer.setCustIndustry("体育");
        entityManager.persist(customer);//保存操作
        //5.提交事务(回滚事务)
        tx.commit();
        //6.释放资源
        entityManager.close();
    }

JPA工具栏抽取

//解决实体管理器工厂的浪费资源和耗时问题:通过静态代码块的形式,
//当程序第一次访问此工具类时,创建一个公共的实体管理器工厂对象
public class JpaUtils {

    private static EntityManagerFactory factory;
    static{
        //加载配置文件创建工厂(实体管理类工厂)对象
        factory = Persistence.createEntityManagerFactory("myJpa");
    }
    //通过实体管理类工厂获取实体管理器
    public static EntityManager getEntityManager(){
        return factory.createEntityManager();
    }
}

发布了165 篇原创文章 · 获赞 8 · 访问量 8990

猜你喜欢

转载自blog.csdn.net/wait_13/article/details/104329515
今日推荐