基於hibernate實現jpa規範
阿新 • • 發佈:2019-02-03
建立java專案或者maven專案,本人在此使用maven構建專案
1.建立maven專案,引入依賴
pom.xml
2.在resource下面建立WEB-INF目錄,在WEB-INF想建立persistence.xml檔案,該檔案是為了與資料庫建立關係,內容如下<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.taikang</groupId> <artifactId>jpa</artifactId> <version>0.0.1-SNAPSHOT</version> <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> <!-- JPA 標準 API--> <hibernate.jpa21.api.version>1.0.0.Final</hibernate.jpa21.api.version> <!-- Hibernate 實現--> <hibernate.version>5.1.0.Final</hibernate.version> <!-- Bean 驗證器 標準 API --> <validation.api.version>1.1.0.Final</validation.api.version> <!-- Hibernate 驗證器實現--> <hibernate.validator.version>5.2.1.Final</hibernate.validator.version> <javax-el.version>3.0.1-b04</javax-el.version> <!-- 日誌--> <slf4j.impl.version>1.6.1</slf4j.impl.version> <!-- TestNG 單元測試--> <testing.version>6.8.7</testing.version> <!-- Jav SE 環境下使用 Bitronix (為JTA 事務管理器提供資料庫連線池)--> <btm.version>2.1.3</btm.version> </properties> <!-- 依賴庫--> <dependencies> <!-- TestNG 單元測試--> <!-- <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>${testing.version}</version> <exclusions> <exclusion> <groupId>junit</groupId> <artifactId>junit</artifactId> </exclusion> </exclusions> </dependency> --> <!-- <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> --> <!-- slf4j 日誌--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>${slf4j.impl.version}</version> </dependency> <!-- Bitronix 資料庫連線池 --> <dependency> <groupId>org.codehaus.btm</groupId> <artifactId>btm</artifactId> <version>${btm.version}</version> </dependency> <!-- Hibernate(JPA實現)--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <!-- Bean 驗證器 API 與實現--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>${hibernate.validator.version}</version> </dependency> <!-- EL --> <dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>${javax-el.version}</version> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.el</artifactId> <version>${javax-el.version}</version> </dependency> <!-- Hibernate 審計--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-envers</artifactId> <version>${hibernate.version}</version> </dependency> <!-- EHCache 作為二級快取--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernate.version}</version> </dependency> <!-- mysql driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency> <dependency> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> </dependency> </dependencies> </project>
persistence.xml
3.編寫實體類,使用jpa註解<?xml version="1.0" encoding="UTF-8"?> <persistence 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" version="1.0"> <persistence-unit name="mysqlJPA" 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="299522" /> <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>
package com.taikang.jpa; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity//表明要建立表 public class Student { @Id //用於表明主鍵 @GeneratedValue(strategy=GenerationType.IDENTITY)//定義主鍵生成策略 private int id; @Column(length=15,nullable=false)//表中欄位長度,是否為空 private String name; @Column(length=2) private String sex; @Temporal(TemporalType.DATE)//定義時間型別格式 private Date birthday; @Lob //大欄位 private String description; public Student() { super(); } public Student( String name, String sex, Date birthday, String desc) { super(); this.name = name; this.sex = sex; this.birthday = birthday; this.description = desc; } 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; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getDescription() { return description; } public void setDescription(String desc) { this.description = desc; } }
4.編寫測試類
package com.taikang.jpa;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.Test;
public class PersonTest {
@Test
public void createTable(){
Student student = new Student("wujinwei", "男", new Date(), "測試jpa資料是否正常");//準備插入的資料
EntityManagerFactory managerFactory = Persistence.createEntityManagerFactory("mysqlJPA");//獲取管理器工程
EntityManager manager = managerFactory.createEntityManager();//獲取管理器,類似於hibernate中的session
manager.getTransaction().begin();//開啟事物
manager.persist(student);//儲存資料
manager.getTransaction().commit();//提交事物
manager.close();//關閉
managerFactory.close();
}
}
5.檢視資料庫表是否建立和資料是否正常插入