jpa配置

JPA规范要求在类路径(Eclipse工程的src目录)的META-INF目录下放置persistence.xml, 文件的名称是固
定的,配置模板(此处是针对Hibernate)如下:


<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="itcast" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="123456" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=<property name="hibernate.max_fetch_depth" value="3" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>


说明:
其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方
面的需求建议set value="none"。里面可以设置的几个参数:
? validate 每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新
表,但是会插入新值。
? create 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新
表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
? create-drop 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
? update 最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立
好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然
存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用
第一次运行起来后才会。
总结:
? 请慎重使用此参数,没必要就不要随便用。
? 如果发现数据库表丢失,请检查hibernate.hbm2ddl.auto的配置


### 如何使用JPA配置数据库连接 在Java Persistence API (JPA) 中,可以通过多种方式来配置数据库连接。以下是基于Spring Boot框架下的JPA数据库连接配置方法。 #### Spring Boot中的JPA数据库连接配置 在Spring Boot项目中,通常通过`application.properties`或`application.yml`文件完成JPA的数据库连接配置。以下是一个典型的配置示例: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # JPA 配置选项 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect ``` 上述配置说明如下: - `spring.datasource.url`: 定义了数据源URL,这里以MySQL为例[^1]。 - `spring.datasource.username` 和 `spring.datasource.password`: 数据库用户名和密码。 - `spring.datasource.driver-class-name`: JDBC驱动类名称。 - `spring.jpa.hibernate.ddl-auto`: Hibernate DDL自动执行策略,常见值有`create`, `update`, `none`等[^4]。 - `spring.jpa.show-sql`: 是否显示生成的SQL语句到控制台。 - `spring.jpa.properties.hibernate.dialect`: 指定Hibernate使用的方言,用于处理特定数据库的功能差异。 对于不同的数据库类型(如H2, PostgreSQL, Oracle),只需调整相应的URL、驱动程序以及可能的方言设置即可。 #### 使用接口定义Repository层 为了操作实体对象,在Spring Data JPA中需要创建一个继承自`JpaRepository`或其他相关接口的Repository接口。例如: ```java public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); } ``` 这里的`UserRepository`扩展了`JpaRepository`,并提供了基本CRUD功能外加额外的方法声明[^2]。 #### 实体管理器EntityManager的应用场景 当标准查询不足以满足需求时,可借助于`@PersistenceContext`注入的`EntityManager`实例手动编写复杂查询逻辑。比如下面展示了一个简单的持久化过程[^3]: ```java @Transactional public class PersonDaoImpl { @PersistenceContext private EntityManager em; public void persistProfessor() { Professor professor = new Professor(); professor.setId(1L); professor.setName("John Doe"); professor.setSalary(BigDecimal.valueOf(90000)); em.persist(professor); } } ``` 以上代码片段展示了如何利用`EntityManager`来进行更精细的数据操控。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值