//根据外键来生成主键
// @TableGenerator(name="ID_GENERATOR",
// table="jpa_id_generators",
// pkColumnName="PK_NAME",
// pkColumnValue="CUSTOMER_ID",
// valueColumnName="PK_VALUE",
// allocationSize=100)
//生成主键的策略
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="LAST_NAME", length=50, nullable=false)
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
以上是外键的生成策略
学习了entityManager的一些函数
find() 查询
getReference() 也是查询,但是跟find不一样,一样的结果不一样的过程。getReference()返回customer的一个代理,真正始用的时候才向数据库发sql,初始化这个对象
persist() 增加对象,与save方法的不同之处,若对象有ID,不能执行insert操作,会抛出异常
remove() 删除对象,类似于delete方法,将对象对应的记录从数据库中移除,但该方法只能移除持久化对象
Customer customer = entityManager.find(Customer.class, 1);
entityManager.remove(customer);
后续代码
package com.huawei.jpa.test;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.huawei.test.Customer;
public class JPATest {
private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
private EntityTransaction transaction;
@Before
public void init() {
entityManagerFactory = Persistence.createEntityManagerFactory("jpa-1");
entityManager = entityManagerFactory.createEntityManager();
transaction = entityManager.getTransaction();
transaction.begin();
}
@After
public void destory() {
transaction.commit();
entityManager.close();
entityManagerFactory.close();
}
//类似于delete方法,将对象对应的记录从数据库中移除,但该方法只能移除持久化对象
@Test
public void testRemove() {
// Customer customer = new Customer();
// customer.setId(2);
// entityManager.remove(customer);
//errror
Customer customer = entityManager.find(Customer.class, 1);
entityManager.remove(customer);
}
//与save方法的不同之处
//若对象有ID,不能执行insert操作,会抛出异常
@Test
public void testPersistence() {
Customer customer = new Customer();
customer.setAge(1000);
customer.setBirth(new Date());
customer.setCreateTime(new Date());
customer.setEmail("huaei@huawei.com");
customer.setLastName("haa");
//customer.setId(9000);
entityManager.persist(customer);
System.out.println(customer.getId());
System.out.println("====");
}
@Test
public void getReference() {
System.out.println("---------->");
Customer customer = entityManager.getReference(Customer.class, 1);
System.out.println(customer);
}
@Test
public void TestFind() {
Customer customer = entityManager.find(Customer.class, 1);
System.out.println(customer);
}
}