前言
jpa
坐标
< ! -- hibernate对jpa的支持包 -- >
< dependency>
< groupId> org. hibernate< / groupId>
< artifactId> hibernate- entitymanager< / artifactId>
< version> ${
project. hibernate. version} < / version>
< / dependency>
< dependency>
< groupId> org. hibernate< / groupId>
< artifactId> hibernate- c3p0< / artifactId>
< version> ${
project. hibernate. version} < / version>
< / dependency>
jpa核心配置文件
< ? xml version= "1.0" encoding= "UTF-8" ? >
< persistence xmlns= "http://java.sun.com/xml/ns/persistence" version= "2.0" >
< ! -- 需要配置persistence- unit节点
持久化单元:
name: 持久化单元名称
transaction- type: 事务管理方式
JTA: 分布式事务管理
RESOURCE_LOCAL: 本地事务管理
-- >
< persistence- unit name= "myJpa" transaction- type= "RESOURCE_LOCAL" >
< ! -- jpa的实现方式-- >
< provider> org. hibernate. jpa. HibernatePersistenceProvider< / provider>
< ! -- 数据库信息-- >
< properties>
< ! --
数据库信息
用户名, javax. persistence. jdbc. user
密码, javax. persistence. jdbc. pasword
驱动, javax. persistence. jdbc. driver
数据库地址 javax. persistence. jdbc. url
-- >
< property name= "javax.persistence.jdbc.user" value= "root" > < / property>
< property name= "javax.persistence.jdbc.password" value= "123456" > < / property>
< property name= "javax.persistence.jdbc.driver" value= "com.mysql.jdbc.Driver" > < / property>
< property name= "javax.persistence.jdbc.url" value= "jdbc:mysql:///spring_data?characterEncoding=utf8" / >
< ! -- 可选配置,配置jpa实现方式的配置-- >
< ! -- 配置jpa实现方( hibernate) 的配置信息
显示sql false | true
自动创建数据库表 hibernate. hbm2ddl. auto
create : 程序运行时创建数据库表(如果有表,先删除表在创建)
update : 程序运行时创建表( 如果有表,不会创建表)
none : 不会创建表
-- >
< property name= "hibernate.show.sql" value= "true" / >
< property name= "hibernate.hbm2ddl.auto" value= "update" / >
< / properties>
< / persistence- unit>
< / persistence>
实体类
@Entity
@Table ( name = "customer" )
public class Customer {
@Id
@GeneratedValue ( strategy = GenerationType. IDENTITY)
@Column ( name = "cust_id" )
private Long custId;
@Column ( name = "cust_name" )
private String custName;
@Column ( name = "cust_source" )
private String custSource;
@Column ( name = "cust_industry" )
private String custIndustry;
@Column ( name = "cust_level" )
private String custLevel;
@Column ( name = "cust_address" )
private String custAddress;
@Column ( name = "cust_phone" )
private String custPhone;
. . . . . . . . setter getter. . . .
}
定义一个工具类
public class JpaUtils {
private static EntityManagerFactory factory;
static {
factory= Persistence. createEntityManagerFactory ( "myJpa" ) ;
}
public static EntityManager getEntityManager ( ) {
return factory. createEntityManager ( ) ;
}
}
使用
test测试
步骤:
@Test
public void testfind ( ) {
EntityManager entityManager= JpaUtils. getEntityManager ( ) ; 调用工具类方法
EntityTransaction tx= entityManager. getTransaction ( ) ;
tx. begin ( ) ;
Customer cu= entityManager. find ( Customer. class , 1 l) ;
System. out. println ( cu) ;
tx. commit ( ) ;
entityManager. close ( ) ;
}
public void testsave ( ) {
EntityManager entityManager= JpaUtils. getEntityManager ( ) ;
EntityTransaction tx= entityManager. getTransaction ( ) ;
tx. begin ( ) ;
Customer cu=