最简单的入手 学习JPA
一、Eclipse New JPA Project
最终项目结构 :
二、Model
包-new JPA Entity (自己写也行 无所谓)
package model;
import java.io.Serializable;
import javax.persistence.*;
/**
* Entity implementation class for Entity: Person
*
*/
@Entity
@Table(name = "T_PERSON")
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
public Person() {
super();
}
private Long id;
private String firstName;
private String lastName;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "FIRST_NAME", length = 100, nullable = false, unique = false)
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name = "LAST_NAME")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
三、persistence.xml
主要就是 jpa中连接数据库 和配置相应的属性
<!-- 配置jpa ORM产品 -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- 添加对应的持久化类 -->
<class>com.java.model.Person</class>
感觉没啥用
这里用的Oracle
注意添加jar :ojdbc6.jar
<?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="MyJPA2" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
<property name="hibernate.connection.url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="hibernate.connection.username" value="petition"/>
<property name="hibernate.connection.password" value="petition"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
四、Main方法
package test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import model.Person;
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.run();
}
public void run() {
EntityManagerFactory factory = null;
EntityManager entityManager = null;
try {
factory = Persistence.createEntityManagerFactory("MyJPA2");
entityManager = factory.createEntityManager();
persistPerson(entityManager);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}finally {
if (entityManager != null) {
entityManager.close();
}
if (factory != null) {
factory.close();
}
}
}
public void persistPerson(EntityManager entityManager) {
EntityTransaction transaction = entityManager.getTransaction();
try {
transaction.begin();
Person person = new Person();
person.setFirstName("Homer");
person.setLastName("Simpson");
entityManager.persist(person);
transaction.commit();
} catch (Exception e) {
if (transaction.isActive()) {
transaction.rollback();
}
}
}
}
五、运行
特别注意:
<property name="hibernate.hbm2ddl.auto" value="update" />
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构