JPA常用内容

来源:互联网 发布:财政部财科所就业知乎 编辑:程序博客网 时间:2024/05/14 16:35
#配置文件工程目录下新建META-INF目录,并创建persistence.xml文件
<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_2_0.xsd"
  version="2.0">
  <persistence-unit name="" transaction-type="RESOURCE_LOCAL">
    <properties>
      <!-- property name="" value="" /> ... -->
    </properties>
  </persistence-unit>
</persistence>


#JPA生成EntityManager
EntityManagerFactory factory = Persistence
    .createEntityManagerFactory([persistence.xml配置文件<persistence-unit>标签的name属性值]);
EntityManager em = em = factory.createEntityManager();
调用Persistence.createEntityManagerFactory生成是,会根据实体类生成规则生成表结构
操作完成后需要调用em.close()以及factory.close()


#事务操作
EntityManager .getTransaction().begin();
EntityManager .getTransaction().commit();
EntityManager .getTransaction().rollback();


#EntityManager常用方法
EntityManager.find(Class<T> entityClass, Object primaryKey) -- 查询对象(托管状态),没有找到返回null
EntityManager.getReference(Class<T> entityClass, Object primaryKey) -- 查询对象引用,对象操作时获得对象托管状态,调用时没有找到对象,抛出EntityNotFoundException异常
EntityManager.persist(T entity) -- 持久化对象,将对象保存到数据库
EntityManager.clear() -- 将对象置成游离态
EntityManager.merge(T entity) -- 将对象设置成托管状态,id存在更新数据,id不存在新增数据
EntityManager.remove(T entity) -- 删除数据库表中对象
EntityManager.refresh(T entity) -- 托管状态不会实时获得数据库更新状况,需要调用refresh方法同步数据

#JPA Annotation 常用注解
@Entity - 标识持久化类,Class注解
@Table - 标识数据库表属性,Class注解
@Id - 标识属性为主键,属性或者get方法注解
@GeneratedValue - 定义主键数值类型,属性或者get方法注解
@Column - 编辑数据库字段属性,属性或者get方法注解
@OneToOne - 标识一对一对象属性,属性或者get方法注解
@OneToMany @ManyToOne - 标识一对多,多对一对象属性,关系维护类必须为多方,属性或者get方法注解
@JoinColumn - 编辑外键属性,属性或者get方法注解
@MoneyToMoney - 标识多对多对象属性,属性或者get方法注解
@JoinTable - 编辑中间表属性,属性或者get方法注解
@Embeddable - 标识类为联合主键类,Class注解
@EmbeddedId - 标识属性为联合主键对象,属性或者get方法注解

#JPA Hibernate maven
<properties>
  <hibernate.version>4.3.1.Final</hibernate.version>
</properties>
<!-- Hibernate -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>${hibernate.version}</version>
</dependency>
<!-- Hibernate Jpa -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>${hibernate.version}</version>
</dependency>
0 0
原创粉丝点击