본문 바로가기

전체 글160

[JPA] Hello JPA 서론 JPA 의 구동 방식과 간단한 예제를 통해 코드를 알아보고, JPQL에 관해 간략하게 설명하는 글입니다. Hello JPA JPA 구동 방식 JPA는 Persistence라는 클래스에서 시작을 합니다. Persistence는 설정 파일을 통해 설정 정보를 조회합니다. 설정 정보에 따라, EntityManagerFactory 라는 클래스를 생성합니다. 해당 클래스에서 필요할 때마다 EntityManager를 찍어냅니다. 실습 기본 package hellojpa; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; publ.. 2023. 12. 2.
[JPA] JPA 소개 서론 JPA는 ORM 기술입니다. ORM이란, Object-Relational Mapping (객체 관계 매핑) 의 약자로 객체와 관계를 매핑해주는 기술입니다. 즉, 객체 지향 언어(ex) Java)로 작성된 데이터와 관계형 데이터베이스(RDB) 사이를 매핑을 해주는 기술입니다. JPA가 어떻게 객체와 관계형 데이터베이스를 연결해주는지에 관해 작성하도록 하겠습니다. 객체와 관계형 데이터베이스의 차이 JPA 설명의 앞서, 객체와 관계형 데이터베이스가 어떻게 다른지 알아본 후, 이를 JPA가 어떻게 해결하는지 알아보도록 하겠습니다. 상속 연관 관계 데이터 타입 데이터 식별 방법 1. 상속 객체 지향 언어에서는 왼쪽과 같이 상속 관계를 사용할 수 있습니다. 하지만, RDB에선 상속 관계가 없습니다. 오른쪽과 .. 2023. 12. 1.
[JDBC] JdbcTemplate 간단히 알아보기 서론 순수한 JDBC를 사용하다보면, 다음과 같이 반복되는 코드가 굉장히 많습니다. public void update(String memberId, int money) { String sql = "update member set money=? where member_id=?"; Connection con = null; PreparedStatement pstmt = null; try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setInt(1, money); pstmt.setString(2, memberId); pstmt.executeUpdate(); } catch (SQLException e) { throw exTranslator... 2023. 10. 17.
[DB] 예외 의존성 해결 - 예외 전환, 스프링의 예외 추상화 서론 서비스 계층은 가급적 특정 구현 기술에 의존하지 않도록 순수하게 유지해야 합니다. 따라서, 이전 글에 남아있는 SQLException의 의존성을 스프링이 제공하는 예외 추상화를 통해 해결하도록 하겠습니다. MemberService package hello.jdbc.service; ... /** * 트랜잭션 - @Transactional AOP */ @Slf4j @RequiredArgsConstructor public class MemberServiceV3_3 { private final MemberRepositoryV3 memberRepository; @Transactional public void accountTransfer(String fromId, String toId, int money) t.. 2023. 10. 17.
[JAVA] 자바 예외 이해 서론 스프링이 제공하는 예외 추상화를 이해하기 위해선, 먼저 자바 기본 예외에 대한 이해가 필요합니다. 실무에 필요한 체크 예외와 언체크 예외의 차이점과 활용 방안에 대해서도 알아보도록 하겠습니다. 예외 계층 Object : 예외도 객체입니다. 모든 객체의 최상위 부모는 Object입니다. Throwable : 최상위 예외입니다. Error : 애플리케이션에서 복구 불가능한 시스템 예외입니다. 메모리 부족과 같은 심각한 시스템 오류를 포함합니다. Exception : 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외입니다. Exception과 그 하위 예외는 모두 컴파일러가 체크하는 예외입니다. 따라서 catch 나 throw 로 해당 예외를 처리해야 컴파일이 됩니다. 단, Runti.. 2023. 10. 9.
[DB] 트랜잭션 매니저, 트랜잭션 템플릿, @Transactional 서론 바로 이전에 작성한 글에서는 스프링의 도움없이 트랜잭션을 사용하여 계좌이체 로직을 구현해봤습니다. 해당 코드는 다음과 같습니다. package hello.jdbc.service; ... @Slf4j @RequiredArgsConstructor public class MemberServiceV2 { private final DataSource dataSource; private final MemberRepositoryV2 memberRepository; public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnection(); try { .. 2023. 10. 8.