스프링 부트가 있는 JPA

5518 단어 jpaspringjava
사용하려면 4단계를 구현해야 합니다.
  • 엔터티에서 매핑 메타데이터 정의
  • EntityManagerFactory 빈을 정의하십시오.
  • 트랜잭션 관리자 및 DataSource 빈 정의
  • 리포지토리/DAO 정의

  • Spring Boot를 사용하면 EntityManagerFactoryBean인 DataSource를 자동으로 생성하고 JpaTransactionManager를 설정합니다. 따라서 Spring Boot와 함께 JPA를 사용하려면 2단계를 구현하면 됩니다.

    도메인 클래스에 주석 달기




    @Entity
    @Table(name="T_ACCOUNT")
    public class Account {
    
        @Id
        @Column(name="ID")
        private Long entityId;
    
        @Column(name="CREDIT_CARD")
        private String creditCardNumber;
        ...
    }
    


    리포지토리를 인터페이스로 정의




    public interface AccountRepository extends Repository<Account,Long> {
    
        public Account findByCreditCardNumber(String creditCardNumber);
    }
    


    Spring Data는 Repository를 확장하는 인터페이스에 대한 런타임 스캔을 구현합니다. 또한 다른 하위 인터페이스 중에서 CRUD 메서드(CrudRepository 확장), 페이징 및 정렬(PagingAndSortingRepository 확장)을 구현합니다. 참조Repository documentation

    CrudRepository 및 사용자 정의 쿼리(JPQL) 사용




    public interface AccountRepository extends CrudRepository<Account,Long> {
    
        public Account findByCreditCardNumber(String creditCardNumber);
    
        @Query("SELECT a FROM Account WHERE a.email NOT LIKE '%@%'")
        public List<Account> findInvalidEmails();
    
    }
    


    저장소 사용




    public class AccountServiceImpl implements AccountService {
    
        private AccountRepository accountRepository;
    
        public AccountServiceImpl(AccountRepository accountRepository) {
            this.accountRepository = accountRepository;
        }
    
        @Transactional
        public Account getAccount(String creditCardNumber) {
            return accountRepository.findByCreditCardNumber(creditCardNumber);
        }
    
        @Transactional
        public void saveAccount(Account account) {
            accountRepository.save(account);
        }
    }
    

    좋은 웹페이지 즐겨찾기