国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

JPA使用入門

2019-11-14 14:58:49
字體:
供稿:網(wǎng)友

  JPA能干什么?我在前面一遍文章《初步了解JPA》基本描述了。不過你不需要點(diǎn)擊回去再看。這里簡(jiǎn)單的再提一下JPA的功能,就是:(1)實(shí)現(xiàn)“對(duì)象-關(guān)系”映射;(2)對(duì)象持久化到數(shù)據(jù)庫(kù);(3)對(duì)象查詢。

  JPA要怎么用,我們直接入手來跑起一個(gè)JPA的demo,我這里是采用Hibernate的JPA實(shí)現(xiàn)。

  (1)創(chuàng)建一個(gè)普通java工程。

  (2)導(dǎo)入必要的包。

    從Hibernate官方下載一個(gè)基本包,我這里下載后得到的是hibernate-release-5.0.4.Final.zip。解壓后可以文件結(jié)構(gòu)大概如下:

      

    其中l(wèi)ib文件夾就是我們需要導(dǎo)入到項(xiàng)目中的包。簡(jiǎn)單的實(shí)現(xiàn),導(dǎo)入required、jpa、jpa-metamodel-generator文件夾下的所有jar包既可。

    另外,不要忘了導(dǎo)入JDBC驅(qū)動(dòng)。我這里用的是MySQL的。從MySQL官網(wǎng)下的mysql-connector-java-5.1.37.zip。解壓導(dǎo)入就行

  (3)創(chuàng)建配置文件

    JPA有一個(gè)硬性要求,配置文件必須是類路徑下的META-INF目錄下的persistence.xml。在我這里可以看到

    

    文件的內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence
  version="1.0"
  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 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
  <PRoperties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
    <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://localhost:3306/jpa" />
    <property name="hibernate.max_fetch_depth" value="3" />
    <property name="hibernate.hbm2ddl.auto" value="update" />
  </properties>
  </persistence-unit>
</persistence>

  如果你的數(shù)據(jù)庫(kù)設(shè)置和我不一樣,自己改一下配置文件。相信一看就懂 ^_^

  (3)代碼

  我這里先寫兩個(gè)類。

    

  TestBasic類內(nèi)容如下:

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

import entity.Person;

public class TestBasic {

  public static void main(String[] args) {
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
    EntityManager entityManager = factory.createEntityManager();

    Person person = new Person();
    person.setName("袁");

    entityManager.getTransaction().begin();
    entityManager.persist(person);
    entityManager.getTransaction().commit();

    entityManager.close();
    factory.close();
  }

}

  Person.java如下:

package entity;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Person {

  @Id
  private int id;
  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;
  }

}

  數(shù)據(jù)庫(kù)中只是建好了jpa庫(kù),里面沒有表。

  運(yùn)行這段代碼,就可以看到數(shù)據(jù)庫(kù)中表被建立起來了。表名和類名Person有點(diǎn)類似,是person。并且有數(shù)據(jù)了。

  

  很明顯,可以知道這其實(shí)就是對(duì)數(shù)據(jù)庫(kù)的插入操作。那么怎么查詢呢。

  在TestBasic類中改一下代碼。

  main方法里這樣寫:

  

EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
EntityManager entityManager = factory.createEntityManager();

Person person = entityManager.find(Person.class, 0);//剛才在數(shù)據(jù)庫(kù)里看到,id是0。
System.out.println(person.getName());

entityManager.close();
factory.close();

  運(yùn)行代碼你會(huì)看到打印出“袁”。

  那么改操作呢:

  繼續(xù)改main方法里的代碼:

EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
EntityManager entityManager = factory.createEntityManager();

entityManager.getTransaction().begin();
Person person = entityManager.find(Person.class, 0);//剛才在數(shù)據(jù)庫(kù)里看到,id是0。
person.setName("鄧");
entityManager.getTransaction().commit();

entityManager.close();
factory.close();

  可以看到數(shù)據(jù)里的數(shù)據(jù)變了。

  

  最后一個(gè)操作,刪除數(shù)據(jù)。

  main方法中的代碼改成如下:

EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
EntityManager entityManager = factory.createEntityManager();

entityManager.getTransaction().begin();
Person person = entityManager.find(Person.class, 0);//剛才在數(shù)據(jù)庫(kù)里看到,id是0。
entityManager.remove(person);
entityManager.getTransaction().commit();

entityManager.close();
factory.close();

  運(yùn)行這段代碼,發(fā)現(xiàn)數(shù)據(jù)庫(kù)里的person表沒數(shù)據(jù)了。

  JPA的增刪改查的演示操作就此完成了。

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴马| 马尔康县| 马山县| 南召县| 庆阳市| 万宁市| 都安| 海阳市| 股票| 全椒县| 南澳县| 石景山区| 奉节县| 诏安县| 洞头县| 咸丰县| 桂东县| 阳原县| 保靖县| 遵义县| 增城市| 察隅县| 宿迁市| 蒙阴县| 彰化市| 浮山县| 横峰县| 九龙坡区| 开鲁县| 汾西县| 察雅县| 舟曲县| 东乡| 犍为县| 泉州市| 镇康县| 康保县| 长春市| 乐平市| 高密市| 柳河县|