第一步:
万年不变maven工程中的pom.xml文件到坐标
<dependencies>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!--hibernate-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.7.Final</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--Junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
第二步:
编写JPA配置文件:
<!--持久化单元
name 名称
transaction-type 事务类型
JTA 分布式事务
RESOURCE_LOCAL 本地事务
-->
<persistence-unit name="jpa01" transaction-type="RESOURCE_LOCAL">
<properties>
<!--数据库信息 驱动 url user password-->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/maven"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<!--显示SQl-->
<property name="hibernate.show_sql" value="true"/>
<!--格式化-->
<property name="hibernate.format_sql" value="true"/>
<!--
create:每次发送SQL 重新建表
update:有表就使用 没表在创建
-->
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
<!--辅助信息 代表JPA的实现框架 如果项目中只引入一个 可省略-->
<!--<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>-->
<!--持久化类 可省略 在实体类中使用@Entity可省略这个 -->
<!-- <class>com.itheima.pojo.User</class>-->
</persistence-unit>
第三步:
实体类中字段与数据库中字段相对应
//注意:引入javax.persistence.* JPA的包
@Entity
//告诉JPA 将本类和数据库中的表做映射
@Table(name = "t_user")
// /@Table映射类名和表名的关系,name标识表名
public class User {
@Id//声明主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//主键自增
private Integer id;
//@Column来映射类的属性 和 数据表的字段之间关系
//当类中的属性名称 和 表中字段名称一致时,@Column可以省略
@Column(name = "user_name")
private String userName;
private Integer age;
private Date createTime;
}
第四步:
编写测试类
@Test
public void persist() {
User user = new User();
user.setUserName("传智播客");
user.setAge(12);
user.setCreateTime(new Date());
User userInfo = new User();
user.setUserName("zhangbo");
user.setAge(22);
user.setCreateTime(new Date());
//1 创建持久化管理器工厂 sqlSessionFactory
String persistenceUnitName = "jpa01";
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
//2 创建持久化管理器 sqlSession CRUD
EntityManager entityManager = entityManagerFactory.createEntityManager();
//EntityManager entityManager = JpaUtil.getEntity();
//3 获取事务 开启事务
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//4 操作
entityManager.persist(user);
entityManager.persist(userInfo);
//5 事务提交
transaction.commit();
//6 关闭资源
entityManager.close();
}