JPA增刪改查的簡單實現
阿新 • • 發佈:2018-11-10
工具IDEA
1.依賴引入:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
2.
在resource下建立檔案/META-INF/persistence.xml
PS:必須是在META-INF資料夾下
3.persistence.xml配置
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.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_2_0.xsd"> <persistence-unit name="JPA" transaction-type="RESOURCE_LOCAL"> <!-- 新增對應的持久化類 --> <class>com.demo.entity.User</class> <properties> <!-- jpa中連線資料庫 --> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mysql? characterEncoding=UTF-8" /> <property name="javax.persistence.jdbc.user" value="root" /> <property name="javax.persistence.jdbc.password" value="password"/> <!-- jpa中配置hibernate基本屬性 --> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> </properties> </persistence-unit> </persistence>
4.公共類EntityManagerUtils
package com.demo.utils; import org.hibernate.Transaction; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class EntityManagerUtils { public static EntityManagerFactory entityManagerFactory=null; public static EntityManager entityManager=null; public static EntityTransaction transaction; // EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("JPA"); // EntityManager entityManager =entityManagerFactory.createEntityManager(); // EntityTransaction transactiond =entityManager.getTransaction(); // transaction. public static void begin(){ if (entityManagerFactory==null){ //“JPA”是persistence.xml的<persistence-unit>標籤的name屬性 entityManagerFactory=Persistence.createEntityManagerFactory("JPA"); } if (entityManager==null){ entityManager=entityManagerFactory.createEntityManager(); } if (transaction==null){ transaction= entityManager.getTransaction(); } transaction.begin(); } public static void close(){ entityManager.close(); entityManagerFactory.close(); //例項是靜態的,賦值後不會隨著factory的關閉而變化,所以設定為null entityManagerFactory=null; entityManager=null; transaction=null; } }
5.實現增刪改查的controller
@RequestMapping(value = "save")
public void save(){
EntityManagerUtils.begin();
User user=new User(1,"dy",21);
EntityManagerUtils.entityManager.persist(user);
EntityManagerUtils.transaction.commit();
EntityManagerUtils.close();
}
@RequestMapping(value = "query")
public void query(){
EntityManagerUtils.begin();
User user=EntityManagerUtils.entityManager.find(User.class,1);
EntityManagerUtils.transaction.commit();
EntityManagerUtils.close();
System.out.println(user);
}
@RequestMapping(value = "update")
public void update(){
EntityManagerUtils.begin();
User user= EntityManagerUtils.entityManager.find(User.class,1);
user.setName("updateName");
EntityManagerUtils.transaction.commit();
EntityManagerUtils.close();
}
@RequestMapping(value = "remove")
public void remove(){
EntityManagerUtils.begin();
User user=EntityManagerUtils.entityManager.find(User.class,1);
EntityManagerUtils.entityManager.remove(user);
EntityManagerUtils.transaction.commit();
EntityManagerUtils.close();
}