JPA의 핵심 개념

✔ 1) 엔티티(Entity)

JPA에서 데이터베이스 테이블과 매핑되는 클래스입니다.

@Entity  // DB 테이블과 매핑됨
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 자동 증가 (Auto Increment)
    private Long id;

    @Column(nullable = false, length = 100)
    private String name;

    @Column(unique = true)
    private String email;
}

✔ 2) Repository (데이터베이스 접근)

Spring Data JPA에서는 JpaRepository<T, ID> 인터페이스를 상속하여 데이터를 쉽게 다룰 수 있습니다.

public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email); // 이메일로 조회하는 메서드
}

📌 SQL 없이도 데이터를 쉽게 조회 가능!

✔ 3) Service (비즈니스 로직)

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User createUser(String name, String email) {
        return userRepository.save(new User(name, email)); // INSERT 실행
    }

    public Optional<User> getUserByEmail(String email) {
        return userRepository.findByEmail(email); // SELECT 실행
    }
}

📌 JPA를 사용하면 SQL 없이 save()findByEmail()만으로 데이터 조작 가능!