강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

dornrrk3님의 프로필 이미지
dornrrk3

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

JPA 기본편 애플리케이션개발 강의 db에 member저장

해결된 질문

작성

·

43

·

수정됨

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
안녕하세요 jpa 기본편 수강 중인 학생입니다.

애플리케이션 개발 강의에서

 

member.setId(1L);

member.setName("HelloA");

하고 2L,HelloB로 바꿔서 실행 후 테이블조회를 하면 1L과HelloA는 뜨지 않고

2L,HelloB만 조회가 됩니다.

코드는 똑같이 작성한 것 같은데 어디가 문제일까요?

public class JpaMain {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");

        EntityManager em = emf.createEntityManager();    

        EntityTransaction tx = em.getTransaction();
        tx.begin();

        try {
            //code
            Member member = new Member();
            member.setId(1L);
            member.setName("HelloA");

            em.persist(member);

            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }

        emf.close();

    }
}

실행을 시키면

Hibernate:

drop table if exists Member cascade

1월 01, 2025 5:44:30 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@4ed4a7e4] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.

Hibernate:

create table Member (

id bigint not null,

name varchar(255),

primary key (id)

)

1월 01, 2025 5:44:30 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@134ff8f8] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.

Hibernate:

/* insert for

hellojpa.Member */insert

into

Member (name, id)

values

(?, ?)

 

drop하고 create가 됩니다...

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. dornrrk3님.

애플리케이션을 실행할 때마다 JPA의 EntityManagerEntityTransaction을 사용하여 데이터를 관리하는 방법에 대해 궁금하신 것 같습니다. Member 엔티티의 데이터가 매번 초기화되고 있다는 문제는, 주로 JPA 설정 파일인 persistence.xml의 설정과 관련이 있을 가능성이 큽니다.

먼저 확인해야 할 것은 persistence.xml 파일의 hibernate.hbm2ddl.auto 속성 값입니다. 이 속성이 create로 설정되어 있으면, 매번 애플리케이션 실행 시 기존 테이블이 삭제되고 새로 생성됩니다. 따라서 데이터가 사라질 수 있습니다. 이를 방지하기 위해 속성을 update로 설정해 보세요.

관련된 실제 해결 사례는 아래 링크에서 참고할 수 있습니다:

  1. 애플리케이션을 실행 시킬 때 마다 초기화

  2. Hello JPA - 애플리케이션 개발 강의 질문드립니다.

위의 질문들은 JPA 설정 문제 해결에 대해서 논의하고 있으며, 특히 데이터보존 관련 설정이 주를 이루고 있습니다.

읽어보신 후에도 해결되지 않는다면, 현재 persistence.xml 파일의 내용을 공유해 주시면 더 구체적인 도움을 드릴 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dornrrk3님의 프로필 이미지
dornrrk3
질문자

해결했습니다 감사합니다

dornrrk3님의 프로필 이미지
dornrrk3

작성한 질문수

질문하기