搭建开发环境
创建maven项目并导入坐标
<properties>
<project.hibernate.version>5.4.27.Final</project.hibernate.version>
</properties>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- hibernate对jpa的支持包 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${project.hibernate.version}</version>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${project.hibernate.version}</version>
</dependency>
<!-- log日志 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
<!-- Mysql and MariaDB -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
创建用户实体类并配置JPA注解
@Data
@Entity
@Table(name = "t_user")
public class User {
@Id
@GeneratedValue
@Column(name = "t_id")
private Long id;
@Column(name = "t_username")
private String username;
@Column(name="t_password")
private String password;
}
所有的注解都是使用JPA的规范提供的注解,即javax.persistence
包下的。
常用注解说明
@Entity
: 指定当前类是实体类@Table
: 指定实体类和表之间的对应关系name
: 指定数据库表的名称
@Id
: 指定当前字段是主键@GeneratedValue
: 指定主键的生成方式strategy
: 指定主键生成策略GenerationType.AUTO
:默认,由程序自动的帮助我们选择主键生成策略GenerationType.IDENTITY
: 底层数据库必须支持自动增长,如mysqlGenerationType.SEQUENCE
: 底层数据库必须支持序列,如oracleGenerationType.TABLE
: jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增
@Column
: 指定实体类属性和数据库表之间的对应关系name
:指定数据库表的列名称unique
:表示该字段是否为唯一标识,默认为falsenullable
:表示该字段是否可以为null值,默认为trueinserttable
:表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值,默认trueupdateable
:表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值,默认truecolumnDefinition
: 表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用table
: 定义了包含当前字段的表名,默认当前实体类length
: 表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符precision
和scale
: 当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数
配置JPA核心配置文件
在maven项目的resources
目录下创建一个名为META-INF
的文件夹,在此文件夹下创建一个名为persistence.xml
的配置文件
<?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>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="123456"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"/>
<!--配置jpa实现方(hibernate)的配置信息
显示sql : false|true
自动创建数据库表 : hibernate.hbm2ddl.auto
create : 程序运行时创建数据库表(如果有表,先删除表再创建)
update :程序运行时创建表(如果有表,不会创建表)
none :不会创建表
-->
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
</persistence-unit>
</persistence>