首頁  >  文章  >  Java  >  Hibernate 如何與 Spring 框架整合?

Hibernate 如何與 Spring 框架整合?

王林
王林原創
2024-04-17 12:03:011035瀏覽

要將 Hibernate 整合到 Spring 框架中,請遵循以下步驟:新增 Maven 相依性;設定資料來源;建立 EntityManager Bean;設定事務管理器;啟用 Persistent Exception Translation。

Hibernate 如何与 Spring 框架集成?

如何將 Hibernate 整合到 Spring 框架?

引言

Hibernate 是一個用於物件-關係映射(ORM) 的持久化框架,而Spring 是一個受歡迎的Java 應用程式框架。將 Hibernate 整合到 Spring 中可以簡化資料庫訪問,並提供企業級功能。

整合步驟

1. 新增依賴項

在Maven 專案的pom.xml 檔案中,新增下列依賴項目:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2. 設定資料來源

在Spring 設定檔中(例如application.properties),設定資料庫連線詳細資料:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=user
spring.datasource.password=password

3. 建立EntityManager Bean

建立一個EntityManagerFactoryBean Bean 以管理與資料庫的互動:

@Bean
public EntityManagerFactory entityManagerFactory() {
  HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
  vendorAdapter.setGenerateDdl(true);

  LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
  factory.setDataSource(dataSource());
  factory.setJpaVendorAdapter(vendorAdapter);
  factory.setPackagesToScan("com.example.myproject.entity");
  return factory.getObject();
}

4. 設定事務管理器

建立一個PlatformTransactionManager Bean 以管理交易:

@Bean
public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory") EntityManagerFactory emf) {
  JpaTransactionManager transactionManager = new JpaTransactionManager();
  transactionManager.setEntityManagerFactory(emf);
  return transactionManager;
}

5. 啟用Persistent Exception Translation

透過在Spring 設定檔中新增下列屬性,啟用Persistent Exception Translation:

spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

實戰案例

以下Java 程式碼展示如何使用Hibernate 儲存一個實體:

@Entity
public class Person {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String name;
}

@Service
public class PersonService {
  @Autowired
  private EntityManagerFactory entityManagerFactory;

  public void save(Person person) {
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    entityManager.getTransaction().begin();
    entityManager.persist(person);
    entityManager.getTransaction().commit();
  }
}

以上是Hibernate 如何與 Spring 框架整合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn